커뮤니티

[지표] 동일한 봉에서 중복 수행을 방지하는 방법 문의

프로필 이미지
브라이언7
2023-08-03 07:05:12
655
글번호 171164
답변완료
사용자가 입력해 놓은 가격에 도달하면 알람이 울리도록 지표를 만들어봤습니다. 한번 알람이 울리면 동일한 봉인 경우에는 다시 울리게 하고 싶지 않은데, 아래처럼 코딩을 했는데, 동일봉 알람방지를 하려고 해도 계속 알람이 울립니다. 어떻게 수정해야 할까요? Input : 알람가격1(1.1240), 동일봉_알람방지(1); var : SavedBarIndex(0), cnt(0); plot1(알람가격1,"알람선1"); If ((C[1] < 알람가격1 And C >= 알람가격1) Or (C[1] > 알람가격1 And C <= 알람가격1)) Then { If ((동일봉_알람방지==1 And SavedBarIndex != GloBalBarIndex) Or 동일봉_알람방지==0) Then { cnt = cnt + 1; MessageLog("[%.0f] #1 SavedBarIndex %.0f GloBalBarIndex %.0f ", cnt, SavedBarIndex, GloBalBarIndex); SavedBarIndex = GloBalBarIndex; MessageLog("[%.0f] #2 SavedBarIndex %.0f GloBalBarIndex %.0f ", cnt, SavedBarIndex, GloBalBarIndex); PlaySound("C:₩Trade_Program₩eFriend Global YesTrader₩efriendglobalyestrader₩data₩Sound₩Stop.wav"); } }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-08-03 11:16:51

안녕하세요 예스스탁입니다. 1 올려주신 내용은 제어가 가능하지 않습니다. 봉하나에서 봉미완성시에 조건만족횟수 체크가 가능하지 않습니다. MessageLog,PlaySound가 if조건만 만족하면 동작하게 되어 있습니다. 예스랭귀지에서는 변수에 값을 저장하는게 최종 봉완성 기준입니다. 시세수신시 변수에 값을 저장하지만 해당 시세가 봉완성시시게 아니면 변수의 값이 전봉에 저장된 최종값으로 다시 환원이 됩니다. 2 최초 발생시만 출력하게는 가능하지 않고 봉완성시에만 최종 조건만족하면 한번 동작하게는 if문에 NextBarOpen > 0 조건을 추가하면 가능합니다. input : 알람가격1(1.1240), 동일봉_알람방지(1); var : SavedBarIndex(0), cnt(0); plot1(알람가격1,"알람선1"); If NextBarOpen > 0 and ((C[1] < 알람가격1 And C >= 알람가격1) Or (C[1] > 알람가격1 And C <= 알람가격1)) Then { If ((동일봉_알람방지==1 And SavedBarIndex != GloBalBarIndex) Or 동일봉_알람방지==0) Then { cnt = cnt + 1; MessageLog("[%.0f] #1 SavedBarIndex %.0f GloBalBarIndex %.0f ", cnt, SavedBarIndex, GloBalBarIndex); SavedBarIndex = GloBalBarIndex; MessageLog("[%.0f] #2 SavedBarIndex %.0f GloBalBarIndex %.0f ", cnt, SavedBarIndex, GloBalBarIndex); PlaySound("C:₩Trade_Program₩eFriend Global YesTrader₩efriendglobalyestrader₩data₩Sound₩Stop.wav"); } } 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 브라이언7 님이 쓴 글입니다. > 제목 : [지표] 동일한 봉에서 중복 수행을 방지하는 방법 문의 > 사용자가 입력해 놓은 가격에 도달하면 알람이 울리도록 지표를 만들어봤습니다. 한번 알람이 울리면 동일한 봉인 경우에는 다시 울리게 하고 싶지 않은데, 아래처럼 코딩을 했는데, 동일봉 알람방지를 하려고 해도 계속 알람이 울립니다. 어떻게 수정해야 할까요? Input : 알람가격1(1.1240), 동일봉_알람방지(1); var : SavedBarIndex(0), cnt(0); plot1(알람가격1,"알람선1"); If ((C[1] < 알람가격1 And C >= 알람가격1) Or (C[1] > 알람가격1 And C <= 알람가격1)) Then { If ((동일봉_알람방지==1 And SavedBarIndex != GloBalBarIndex) Or 동일봉_알람방지==0) Then { cnt = cnt + 1; MessageLog("[%.0f] #1 SavedBarIndex %.0f GloBalBarIndex %.0f ", cnt, SavedBarIndex, GloBalBarIndex); SavedBarIndex = GloBalBarIndex; MessageLog("[%.0f] #2 SavedBarIndex %.0f GloBalBarIndex %.0f ", cnt, SavedBarIndex, GloBalBarIndex); PlaySound("C:₩Trade_Program₩eFriend Global YesTrader₩efriendglobalyestrader₩data₩Sound₩Stop.wav"); } }