두 번째 기능으로 TV 쇼를 보는 대신 책 을 읽고 이해하는 것을 고려해야 합니다. ;-)
당신이 달성하려고 하는 것은 간단하고 많은 전략에서 사용되지만, 당신의 코드와 당신의 이야기는 혼란스럽고 부분적으로 틀립니다. 적어도 코드는 .... 이야기에 대해 잘 모릅니다.
//Pseudo codeif (NewBar) ResetSignals(); //Set all SignalxExecuted to falseif (SignalBuy1&&!SignalBuy1Executed&&OpenOrders()== 1 ){
//do open buy position
SignalBuy1Executed= true ; //Set Signal to exectued to prevent a reuse in the same bar
}
if (SignalBuy2&&!SignalBuy2Executed&&OpenOrders()== 2 ){
//do open buy position
SignalBuy2Executed= true ; //Set Signal to exectued to prevent a reuse in the same bar
}
SignalBuy1=CheckForOpenBull42(); //Check for Signal1 condition is true
SignalBuy2=CheckForOpenBull62(); //Check for Signal2 condition is true
if(OpenOrders()>0)CheckForClose(); //Check any order needs to be closed
//and so on.....
일단 신호 하나만 구현하고 필요한 기능에 대한 코딩에 집중해보는 건 어떨까요? 하나의 신호에 대한 좋은 코드가 있다면 다른 신호를 구현하는 것이 쉬울 것이고 많은 기능이 이미 존재합니다.
나중에 배열 및 기타 기능을 사용하여 단순화할 수 있지만 위의 코드를 단순화하는 것이 현재로서는 가장 큰 문제가 되지 않아야 합니다.
(NewBar)ResetSignals()옵션을사용하지 마십시오 . 오류의 원인이 아니라고생각하기 때문 입니다.
Fun_NewBar() 함수 가 코딩된 방식으로는 그렇게 할 수 없습니다. . . bool 유형이고 bool 값을 반환하도록 이렇게 해야 합니다. . .
bool Fun_New_Bar()
{
staticdatetime New_Time= 0 ;
if (New_Time!=Time[ 0 ])
{
New_Time=Time[ 0 ];
return ( true ); // <---- we have a new bar so the function returns true
}
return ( false );
}
네, 맞습니다.bool 을 반환하고이전에 보지 못한int(이미 수정됨) 가 있습니다. 감사합니다 하지만이 기능 은 내가사용하지 않는텍스트로
나는 이것이 두 개의겹치는전략을분리하는기능 에 적용되지 않는다고 생각합니다 . 나는 관계를 보지 않는다.아니면내가 틀렸나요?
//Pseudo codeif (NewBar) ResetSignals(); //Set all SignalxExecuted to falseif (SignalBuy1&&!SignalBuy1Executed&&OpenOrders()== 1 ){
//do open buy position
SignalBuy1Executed= true ; //Set Signal to exectued to prevent a reuse in the same bar
}
RaptorUK가 위에서 언급한 것을 수정해야 합니다. 신호 재설정이 중요합니다. 그렇지 않으면 EA가 새로운 거래를 시작하면서 곧 중단됩니다. 구현이 잘못되었습니다. 매 틱마다 SignalExecuted를 재설정하면 의미가 없습니다. OpenOrders도 필터링하기 때문에 더 많은 거래를 열지 않을 수도 있습니다. 그러나 전략을 통해 여러 주문을 열 수 있으므로 주문을 닫는 알고리즘도 원한다고 상상할 수 있으므로 새 막대에서 SignalExecuted 플래그를 재설정해야 합니다(구현에서는 쓸모없고 필요하지 않음) .
내가 당신을 맞다면 BULL6도 참이면 BULL4를 실행하지 않을 것입니다. 즉, 빨간색 전략이 유효하지 않은 경우 파란색 전략만, 평균 캔들이 유효하지 않은 경우에만 작은 캔들입니다.
if (BULL4()&&!BULL6(){ // <--- only strategy BULL4 is valid, we are looking at a 'small' bar.if (!SignalBULL41Executed && OpenOrders( Symbol ())== 0 ){
OpenBULL41(); //do open buy position
SignalBULL41Executed= true ;
}
if (!SignalBULL42Executed && OpenOrders( Symbol ())== 1 ){
OpenBULL42(); //do open buy position
SignalBULL42Executed= true ;
}
// Check for open for scenario 1 / EA 1 / startegy 1 bool OpenBULL41()
{
int res;
if (Bid==Close[ 1 ]+ 3 * Point ) // <--- equal makes no sense here and you should not compare doubles for equality.
Read (again): https://www.mql5.com/en/forum/136997
{
res= OrderSend ( Symbol (),OP_BUY, 0.41 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA, 0 ,Blue); // <--- what is your plan with res? You are aware, it does include the ticket
number or -1, aren't you?
return ( true ); // <--- Even if OrderSend() fails you return true.
}
return ( false );
}
//----------------------------------- bool OpenBULL42()
{
int res;
if (Ask>OrderOpenPrice()+ 4 * Point ) // <--- OrderOpenPrice() from a somewhere selected order may or may not work here
(may because only one order is open), but it is not nice coded.
{
res= OrderSend ( Symbol (),OP_BUY, 0.42 ,Ask, 0 ,Close[ 1 ]- 25 * Point , 0 , "" ,MAGICMA, 0 ,Blue);
return ;
}
}
CheckForClose() 함수에는 거의 동일한 문제가 있으며 추가로 매직 넘버에 대한 필터가 없습니다. 또한 여기에서 구매 카운트의 주문에서 선택한 OrderOpenPrice()가 잘못된 주문을 마감하는 것으로 끝날 수 있습니다(실제로 작동하는지 확신할 수 없음). Raptor가 이 스레드의 첫 페이지에 쓴 내용도 다시 읽으십시오.
귀하의 게시물과 코드의 댓글에서 어떤 순서가 어떤 전략에 속하는지 알고 싶어하는 느낌이 듭니다. 이를 달성하기 위해 두 번째 전략에 대한 두 번째 매직 넘버를 정의할 수 있습니다. 그런 다음 열린 전략에 따라 주문을 마감하는 것이 더 쉽습니다.
RaptorUK : 각각 자체 차트에 있는 2개의 개별 EA에서 2개의 다른 전략을 실행하는 것이 더 간단하지 않을까요?
예, 2, 3, 4, 5... 동의했습니다. 그러나 이야기와 이 기사에 따르면 " 나는150개의정책을작성해야하고 동일한 그래프에서동시에이동해야 하고모든전략 을 한 번에 실행 해야 합니다 . 150개의 EA를 동시에 실행하면내PC가폭발할 것입니다. -그렇게생각해요. " 하나의 EA에서 더 많은 전략을 실행할 계획이라고 생각합니다....
아직 내 EA 를 이해 하지 못하는 사람들 을 위해 이야기 를 작성 하십시오 : D 헤헤
이벤트 는 양초 입니다 . 매수 및 매도 또는 마감 을 위한 다양한 옵션이 있습니다 .
두 번째 기능으로 TV 쇼를 보는 대신 책 을 읽고 이해하는 것을 고려해야 합니다. ;-)
당신이 달성하려고 하는 것은 간단하고 많은 전략에서 사용되지만, 당신의 코드와 당신의 이야기는 혼란스럽고 부분적으로 틀립니다. 적어도 코드는 .... 이야기에 대해 잘 모릅니다.
일단 신호 하나만 구현하고 필요한 기능에 대한 코딩에 집중해보는 건 어떨까요? 하나의 신호에 대한 좋은 코드가 있다면 다른 신호를 구현하는 것이 쉬울 것이고 많은 기능이 이미 존재합니다.
나중에 배열 및 기타 기능을 사용하여 단순화할 수 있지만 위의 코드를 단순화하는 것이 현재로서는 가장 큰 문제가 되지 않아야 합니다.
크로닌 네! 당신은 저를 이해합니다 :), 하나 의 EA 에 많은 전략 이 있습니다.
150개의 정책 을 작성 해야 하고 동일한 그래프에서 동시에 이동해야 하고 모든 전략 을 한 번에 실행 해야 합니다 . 150EA를 동시에 실행하면 내 PC 가 폭발할 것 입니다. 그렇게 생각 합니다.
그 후에는 하나 의 전략 EA 만 있고 많은 전략이 이미 내부 에 있을 수 있기 때문에 의미 가 없습니다.
물론, 전략 은 서로 간섭 할 수 없으며 1회 실행 시 1초도 실행할 수 있으며, 1회, 3회, 5회 전략과 전략(1,3,5)을 동시에 실행할 수 있습니다.
더이상의 이야기 는 쓰지 않겠 습니다 :)
내 코드가 잘못 되었습니다. 두 가지 전략 을 단일 EA 에 넣으 려고 했습니다 . 코드 는 잘 작동 하지만 전체 가 제대로 작동 하지 않습니다.
귀하의 코드는 매우 흥미롭습니다. 연구하겠습니다 . 시간 을 주십시오 .
안녕하세요 친구 여러분 , 오랜 시간 코드 작업 끝에 Kronin 의 정보 를 통해 코드가 구성되고 작동합니다 .
코드 는 단일 EA 에서 두 가지 전략 을 제시합니다 .
1. 작은 양초 구매 시나리오 의 경우 파란색 화살표 로 표시되며 BUY 에 대한 두 가지 옵션 이 있습니다.
2. 평균 촛불 의 경우 구매 시나리오 촛불 은 빨간색 화살표 로 표시되며 BUY 에 대한 세 가지 옵션입니다.
1 포인트 = 1핍 이 편리한 상황도 있습니다 ( 문제 를 해결 하는 것은 나중을 위한 것입니다 )
( NewBar ) ResetSignals () 옵션을 사용 하지 마십시오 . 오류 의 원인 이 아니라고 생각하기 때문 입니다.
start() blue 에서 PART 2 함수 를 삭제 하면 하나의 전략 이 작동 하고 제대로 작동합니다 .
두 가지 실행 전략 이 포함된 PART1 및 PART2 코드 를 실행하면 겹칠 것 입니다. 이것은 오류입니다
크로닌 좀 봐주 시겠어요 ?
( NewBar ) ResetSignals () 옵션을 사용 하지 마십시오 . 오류 의 원인 이 아니라고 생각하기 때문 입니다.
Fun_NewBar() 함수 가 코딩된 방식으로는 그렇게 할 수 없습니다. . . bool 유형이고 bool 값을 반환하도록 이렇게 해야 합니다. . .
네 , 맞습니다. bool 을 반환 하고 이전에 보지 못한 int( 이미 수정 됨) 가 있습니다. 감사합니다
하지만 이 기능 은 내가 사용하지 않는 텍스트 로
나는 이것이 두 개의 겹치는 전략 을 분리 하는 기능 에 적용 되지 않는다고 생각 합니다 . 나는 관계를 보지 않는다 . 아니면 내가 틀렸나 요?
조금이나마 발전하셨다니 다행입니다만, 아직 갈 길이 멉니다 :-)
RaptorUK가 위에서 언급한 것을 수정해야 합니다. 신호 재설정이 중요합니다. 그렇지 않으면 EA가 새로운 거래를 시작하면서 곧 중단됩니다.
구현이 잘못되었습니다. 매 틱마다 SignalExecuted를 재설정하면 의미가 없습니다. OpenOrders도 필터링하기 때문에 더 많은 거래를 열지 않을 수도 있습니다. 그러나 전략을 통해 여러 주문을 열 수 있으므로 주문을 닫는 알고리즘도 원한다고 상상할 수 있으므로 새 막대에서 SignalExecuted 플래그를 재설정해야 합니다(구현에서는 쓸모없고 필요하지 않음) .
내가 당신을 맞다면 BULL6도 참이면 BULL4를 실행하지 않을 것입니다. 즉, 빨간색 전략이 유효하지 않은 경우 파란색 전략만, 평균 캔들이 유효하지 않은 경우에만 작은 캔들입니다.
다음 단계:
CheckForClose() 함수에는 거의 동일한 문제가 있으며 추가로 매직 넘버에 대한 필터가 없습니다. 또한 여기에서 구매 카운트의 주문에서 선택한 OrderOpenPrice()가 잘못된 주문을 마감하는 것으로 끝날 수 있습니다(실제로 작동하는지 확신할 수 없음).
Raptor가 이 스레드의 첫 페이지에 쓴 내용도 다시 읽으십시오.
귀하의 게시물과 코드의 댓글에서 어떤 순서가 어떤 전략에 속하는지 알고 싶어하는 느낌이 듭니다. 이를 달성하기 위해 두 번째 전략에 대한 두 번째 매직 넘버를 정의할 수 있습니다. 그런 다음 열린 전략에 따라 주문을 마감하는 것이 더 쉽습니다.
다음 단계:
귀하의 게시물과 코드의 댓글에서 어떤 순서가 어떤 전략에 속하는지 알고 싶어하는 느낌이 듭니다. 이를 달성하기 위해 두 번째 전략에 대한 두 번째 매직 넘버를 정의할 수 있습니다. 그런 다음 열린 전략에 따라 주문을 마감하는 것이 더 쉽습니다.
각각 자체 차트에 있는 2개의 개별 EA에서 2개의 다른 전략을 실행하는 것이 더 간단하지 않을까요?
예, 2, 3, 4, 5... 동의했습니다. 그러나 이야기와 이 기사에 따르면 " 나는 150개의 정책 을 작성 해야 하고 동일한 그래프에서 동시에 이동해야 하고 모든 전략 을 한 번에 실행 해야 합니다 . 150개의 EA를 동시에 실행하면 내 PC 가 폭발할 것입니다. - 그렇게 생각해요 . "
하나의 EA에서 더 많은 전략을 실행할 계획이라고 생각합니다....