커뮤니티

barssinceexit를 이용한 청산이후 N개 봉 이후에 조건 만족시 진입 식

프로필 이미지
노르웨이
2017-05-11 17:00:18
156
글번호 109473
답변완료
파라볼릭을 이용한 진입 및 청산식입니다. 첫 진입에 cnt라는 변수에 +1을 해주어 그 다음부터는 barssinceexit(1)로 청산이후의 봉 개수를 세주어 봉개수가 10개 또는 N개의 봉이 지난 이후에 진입을 하려고합니다. 이말은 즉, 파라볼릭에서 하락세일 때 하락세가 10일(일봉기준)이상 지속되고나서 추세가 반전되었을 때 들어가려고 하는 것 입니다. 그런데 이게 작동이 안되어서 BarsSinceExit를 빼고해도 "Buy11"의 첫 진입으로 들어가고, 청산이 일어나고, 그 뒤로는 "Buy22"의 진입식으로 들어가게 하려고하는데 작동하질 않습니다. 첫진입식으로 진입하고 이후에는 청산하고나서 10일뒤 또는 N일 뒤에 진입 할 수 있는 식을 만들려고하는 것입니다. 감사합니다. Input : af(0.02), maxAF(0.2); var : cnt(0); var1 = SAR(af,maxAF); #첫진입 If MarketPosition == 0 and cnt == 0 Then { If var1 < C Then Buy("Buy11",AtMarket); cnt = (cnt + 1); } #첫진입 이후의 진입 If MarketPosition == 0 and BarsSinceExit(1) > 10 and cnt == 1 Then { If var1 < C Then Buy("Buy22",AtMarket); } #청산 If MarketPosition == 1 Then { If var1 > C Then ExitLong("EL",AtMarket); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-05-12 11:01:28

안녕하세요 예스스탁입니다. 작성하신 식에서 cnt는 buy에 따라 1씩 증가하는것이 아니고 If MarketPosition == 0 and cnt == 0 Then에만 종속됩니다. 하나의 if문에 복수의 실행문이 있으면 {}로 묶어 주어야 합니다. 문의하신 내용은 TotalTrades로 제어하시면 됩니다. TotalTrades는 청산된 거래의 횟수입니다. Input : af(0.02), maxAF(0.2); var : cnt(0); var1 = SAR(af,maxAF); #전체 첫진입 If MarketPosition == 0 and TotalTrades == 0 Then { If var1 < C Then Buy("Buy11",AtMarket); } #두번째 진입부터 If MarketPosition == 0 and BarsSinceExit(1) > 10 and TotalTrades >= 1 Then { If var1 < C Then Buy("Buy22",AtMarket); } #청산 If MarketPosition == 1 Then { If var1 > C Then ExitLong("EL",AtMarket); } 즐거운 하루되세요 > 노르웨이 님이 쓴 글입니다. > 제목 : barssinceexit를 이용한 청산이후 N개 봉 이후에 조건 만족시 진입 식 > 파라볼릭을 이용한 진입 및 청산식입니다. 첫 진입에 cnt라는 변수에 +1을 해주어 그 다음부터는 barssinceexit(1)로 청산이후의 봉 개수를 세주어 봉개수가 10개 또는 N개의 봉이 지난 이후에 진입을 하려고합니다. 이말은 즉, 파라볼릭에서 하락세일 때 하락세가 10일(일봉기준)이상 지속되고나서 추세가 반전되었을 때 들어가려고 하는 것 입니다. 그런데 이게 작동이 안되어서 BarsSinceExit를 빼고해도 "Buy11"의 첫 진입으로 들어가고, 청산이 일어나고, 그 뒤로는 "Buy22"의 진입식으로 들어가게 하려고하는데 작동하질 않습니다. 첫진입식으로 진입하고 이후에는 청산하고나서 10일뒤 또는 N일 뒤에 진입 할 수 있는 식을 만들려고하는 것입니다. 감사합니다. Input : af(0.02), maxAF(0.2); var : cnt(0); var1 = SAR(af,maxAF); #첫진입 If MarketPosition == 0 and cnt == 0 Then { If var1 < C Then Buy("Buy11",AtMarket); cnt = (cnt + 1); } #첫진입 이후의 진입 If MarketPosition == 0 and BarsSinceExit(1) > 10 and cnt == 1 Then { If var1 < C Then Buy("Buy22",AtMarket); } #청산 If MarketPosition == 1 Then { If var1 > C Then ExitLong("EL",AtMarket); }