안녕하세요, 누군가 저를 도와주실 수 있나요? 내 이해에, 나는 기사에 표시된 모든 것을했다. 그러나 나는 저자가 이미 구매가 있으면 구매를하지 않거나 이미 판매가 있으면 판매하지 않으려는 것을 이해하는 것 이상으로 두 개의 동시 오픈 작업을 관리 할 수 없습니다. 예를 들어, 내 전략은 오픈 매수 주문이있을 때 매도 신호를 보내고 매도를 여는 대신 코드가 tp / sl을 건드리지 않고 매수 작업을 닫습니다. 따라서 매수 또는 매도가 없습니다. 매도는 매수를 마감하고 매수는 매도를 마감합니다. 저는 전략에서 한 쌍, 한 시간대, 한 랏 크기만 사용하고 있습니다. 전략이 트리거되는 경우 매수 및 매도가 동시에 열리도록하는 방법을 알려주시겠습니까? 즉, 주문은 tp / sl에 의해서만 마감됩니다. 미리 감사드립니다.
가이드 마지막에 있는 이 파일을 사용하여'전략 테스터'를 실행하고 있는데 다음과 같은 오류가 발생합니다:
*이 오류는 이 문서에서 이미 논의되었지만 문서화된 해결책을 찾지 못하여 도움이 필요합니다.
OF 012:44:39.040 EA_ADX (XAUUSD,H1) 2020.01.0319:00:00Alert: The Buy order request could not be completed -error:4756
ED 212:44:39.043 Trades 2020.01.0320:00:00 failed market buy 0.1 XAUUSD sl: 1549.09 tp: 1549.16 [Invalid stops]
JP 012:44:39.043 EA_ADX (XAUUSD,H1) 2020.01.0320:00:00Alert: The Buy order request could not be completed -error:4756
ER 212:44:39.049 Trades 2020.01.0321:00:00 failed market buy 0.1 XAUUSD sl: 1549.90 tp: 1549.97 [Invalid stops]
MR 012:44:39.049 EA_ADX (XAUUSD,H1) 2020.01.0321:00:00Alert: The Buy order request could not be completed -error:4756
PP 212:44:39.053 Trades 2020.01.0322:00:00 failed market buy 0.1 XAUUSD sl: 1548.16 tp: 1548.23 [Invalid stops]
//--- MQL5 MqlTick 구조를 사용하여 최종 가격 견적 받기if(!SymbolInfoTick(_Symbol,latest_price))
{
Alert("Error getting the latest price quote - error:",GetLastError(),"!!");
return;
}
기사가 "순"모드에 있고 "헤징"모드로 설정하기 위해 정보를 찾아야했기 때문에 브로커와 함께 작동하도록하는 것이 약간 어려웠습니다. 가장 먼저 발생한 문제는 mrequest.type_filling이었습니다 .
XM 브로커의 경우 작동하는 브로커가 있습니다:
mrequest.type_filling = ORDER_FILLING_IOC; // 주문 실행 유형
MT5에서 어떤 것을 허용하는지 모를 경우, 제가 추천하는 것은Print(TypeFilling()) 또는 Comment( TypeFilling())의 TypeFilling() 함수를 사용하여유형을 반환하는 것입니다; 1 (ORDER_FILLING_FOK ) 또는 2 (ORDER_FILLING_IOC )라고 표시되면 어느 것을 입력해야하는지 알 수있습니다 (https://www.mql5.com/docs/constants/tradingconstants/orderproperties#enum_order_type_filling ) 이 브로커에서는ORDER_FILLING_FOK (1)이 작동하지 않기 때문입니다.
이 문제가 해결되면 포지션 선택이 많은 포지션을 여는 것이 문제입니다. 사무엘이 전략에서 언급하지는 않았지만, 설정된 기준 (4 개의 부울 단계)으로 단일 매수 또는 매도 포지션 (둘 중 먼저 오는 것)을 여는 것이 목표이며이 포지션이 마감 될 때까지 다른 포지션을 열 수 없다는 것을 이해합니다.
제가 한 일은 이 코드를 변경하는 것입니다...
//--- 오류가 없으므로 계속 진행합니다.//--- 아직 오픈 포지션이 있나요?bool Buy_opened=false; // 오픈 포지션 매수 결과를 저장하는 변수bool Sell_opened=false; // 오픈 포지션 Sale의 결과를 저장하는 변수if (PositionSelect(_Symbol) ==true) // 오픈 포지션이 있습니다.
{
if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
{
Buy_opened = true; // 구매입니다
}
elseif(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
{
Sell_opened = true; // 세일 중입니다
}
}
이것의 경우...
//--- 오류가 없으므로 계속 진행합니다.//--- 아직 오픈 포지션이 있나요?bool Buy_opened = false; // 오픈 매수 포지션의 결과를 저장하는 변수bool Sell_opened = false; // 오픈 매도 포지션의 결과를 저장하는 변수// 모든 주문을 살펴보고 미결 주문이 있는지 확인합니다.for(int i = 0; i < PositionsTotal(); i++)
{
ulong ticket = PositionGetTicket(i);
PositionSelectByTicket(ticket);
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
{
Buy_opened = true; //는 구매입니다.
}
elseif(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
{
Sell_opened = true; //는 판매 중입니다.
}
}
// 오픈 포지션이 있는 경우 활성 작업이 닫힐 때까지 기다립니다(SL 또는 TP 터치).if (Buy_opened || Sell_opened) return;
참고 : 바로 뒤에 줄이 나옵니다 ...
//--- 이전 막대의 종가를 현재 막대(bar1)로 복사합니다.
p_close=mrate[1].close;
이 EA를 미니 지수 또는 미니 달러에 사용할 수 있는지 아는 사람이 있나요?
안녕하세요, 안녕하세요.
가이드 마지막에 있는 이 파일을 사용하여'전략 테스터'를 실행하고 있는데 다음과 같은 오류가 발생합니다:
*이 오류는 이 문서에서 이미 논의되었지만 문서화된 해결책을 찾지 못하여 도움이 필요합니다.
이 파일은 가이드 끝에 있습니다.
이 문제를 해결하려면 어떻게 해야 하나요?
제안된 수정 방법을 모두 적용한 후에도 여전히 이 오류가 발생하고 있습니다:
제로메모리(mrequest);
그리고 또한
if(Buy_opened || Sell_opened)
4756 오류에 대해 도와주실 수 있나요? 구매 주문을 할 수 없는 것 같습니다.
SymbolInfoTick 함수를 사용하고 이 부분을 코드에 작성했는지 확인하세요:
PositionSelect가 _Symbol의 첫 번째 포지션을 선택하기 때문에 EA가 매수 포지션을 개시하면 매수 포지션이 열려 있는 동안 Sell_opened 변수는 항상 거짓이 되어 매도 신호가 있을 때마다 여러 매도 포지션이 실현됩니다.
이를 수정하고 매수 포지션과 매도 포지션이 동시에 개설되어 있는지 확인하려면 다음 로직을 사용할 수 있습니다:
안녕하세요, 여러분, 좋은 아침입니다.
가이드 마지막에 있는 이 파일을 사용하여'전략 테스터'를 실행하고 있는데 다음과 같은 오류가 표시됩니다:
*이 오류는 이 문서에서 이미 논의되었지만 문서화된 해결 방법이 없으므로 도움이 필요합니다.
파일은 가이드 끝에 있습니다.
이 문제를 해결하려면 어떻게 해야 하나요?
요청하는 판매 가격을 확인하려면 중단점을 사용하여 mrequest.price, mrequest.sl 및 mrequest.tp 변수를 디버깅하세요.
다음을 변경해 보세요.
로 변경해 보세요:
일부 페이퍼에는 최소 손절매 규칙이 있습니다. 자세한 내용은 여기를 참조하세요: https://www.mql5.com/pt/forum/319474
안녕하세요,
기사 감사합니다 사무엘, 당신은 균열입니다!
기사가 "순"모드에 있고 "헤징"모드로 설정하기 위해 정보를 찾아야했기 때문에 브로커와 함께 작동하도록하는 것이 약간 어려웠습니다. 가장 먼저 발생한 문제는 mrequest.type_filling이었습니다 .
XM 브로커의 경우 작동하는 브로커가 있습니다:
MT5에서 어떤 것을 허용하는지 모를 경우, 제가 추천하는 것은 Print(TypeFilling()) 또는 Comment( TypeFilling( ))의 TypeFilling() 함수를 사용하여유형을 반환하는 것입니다; 1 (ORDER_FILLING_FOK ) 또는 2 (ORDER_FILLING_IOC )라고 표시되면 어느 것을 입력해야하는지 알 수있습니다 (https://www.mql5.com/docs/constants/tradingconstants/orderproperties#enum_order_type_filling ) 이 브로커에서는ORDER_FILLING_FOK (1)이 작동하지 않기 때문입니다.
이 문제가 해결되면 포지션 선택이 많은 포지션을 여는 것이 문제입니다. 사무엘이 전략에서 언급하지는 않았지만, 설정된 기준 (4 개의 부울 단계)으로 단일 매수 또는 매도 포지션 (둘 중 먼저 오는 것)을 여는 것이 목표이며이 포지션이 마감 될 때까지 다른 포지션을 열 수 없다는 것을 이해합니다.
제가 한 일은 이 코드를 변경하는 것입니다...
이것의 경우...
참고 : 바로 뒤에 줄이 나옵니다 ...
이렇게하면 저에게는 잘 작동했습니다. 도움이 되었기를 바랍니다.
안부 인사.
제안된 수정 방법을 모두 적용한 후에도 여전히 이 오류가 발생하고 있습니다:
제로메모리(mrequest);
그리고 또한
if(Buy_opened || Sell_opened)
4756 오류에 대해 도와주실 수 있나요? 구매 주문을 할 수 없는 것 같습니다.
브로커의 주문 유형이 ORDER_FILLING_IOC일 수 있으니 다음 코드를 수정해 보세요:
mrequest.type_filling = ORDER_FILLING_FOK;에서:
mrequest.type_filling = ORDER_FILLING_IOC;나도 같은 문제가 있었는데 이제 성공적으로 해결했습니다.