코딩하는 방법? - 페이지 289

 

이 EA를 완료하는 데 도움이 필요합니다.

다음을 수행하는 EA(이미 만들어진 일부 코드 사용)를 코딩하려고 합니다.

  • 특정 시간(이 경우 23:00)에 SL과 TP를 사용하여 두 가지 보류 중인 주문인 매도 스탑과 매수 스탑을 엽니다.
  • 특정 시간(예: 10:00)에 보류 중인 주문을 만료하고 금요일 23:00에 거래를 열지 않습니다.
  • 두 개의 거래가 열리고 하나가 SL에 도달하면 다른 하나는 TP가 일정량만큼 증가합니다(OrderModify가 이와 같은 문제를 해결할 것이라고 생각합니다).
  • 열린 거래 는 다음날 23:00까지 자동으로 마감됩니다.
  • EA가 거의 완료 되었고 이전 문제 중 일부가 해결되었으며 위의 대부분을 수행하지만 여전히 다음 문제가 있으며 이 시점에서 더 진행하는 방법을 모릅니다. 따라서 누군가가 필요한 코드를 제공할 수 있다면 매우 도움이 됩니다.

  • 두 거래가 열려 있고 하나는 손절매에 도달할 때 이익 을 일정 금액만큼 증가시키려면 아직 열려 있는 다른 거래가 필요합니다.
  • 내가 원하지 않는 금요일 23:00에 거래가 계속 열리고 있습니다.
  • 23:00까지 아직 열려 있는 모든 거래는 손실 또는 이익에 관계없이 마감되어야 합니다.

저는 MQL의 멍청한 놈이고 위의 몇 가지 문제에 대한 해결책을 찾아보았지만 찾는 데 문제가 있습니다. 그렇게 복잡한 코딩이 필요하지 않으면 문제를 아주 쉽게 해결할 수 있다고 생각합니다. 누군가 위의 문제에 대한 솔루션이나 솔루션을 제공할 수 있다면 다시 한 번 대단히 감사하겠습니다.

감사해요,

매드맥스3

 

...

다음과 같이 시도하십시오.

if((CurrentPriceBuy>UpperPriceTrigger) && TakeAction==1)

{

int ticketBuy = OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Co mm,0,0,CLR_NONE);

if (ticketBuy>-1)

OrderModify(ticketBuy,OrderOpenPrice(),stopLossToUse,takeProfitToUse,0,CLR_NONE);

}

stopLossToUse 및 takeLossToUse를 원하는 값으로 바꾸십시오.

kasio:
친구,

저는 MQL4 프로그래밍의 초보자이며 ECN 브로커가 있는 ORDERSEND에 SL 및 TP를 연결하는 데 도움이 필요합니다.

처음에는 누군가가 ORDERSEND 내의 StopLoss & TakeProfit 필드를 "0"으로 설정해야 한다고 지적할 때까지 SL & TP가 내 주문 결과에 오류가 발생하도록 했는지 이해할 수 없었습니다. 그렇지 않으면 ECN/STP 중개인이 명령을 실행합니다.

그래서 제 질문은 어떻게 하면 마켓에서 주문을 실행한 다음 즉시(또는 1~2초 이내에) 해당 티켓에 SL/TP를 첨부할 수 있습니까?

다음은 내 질문과 관련된 코드입니다.

if((CurrentPriceBuy>UpperPriceTrigger) && TakeAction==1)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Comm,0,0,CLR_NONE);

테이크액션=0;

}

특정 티켓에 임의로 25pips의 TP/SL을 첨부할 수 있도록 OrderSend 명령 바로 뒤에 코드를 삽입하도록 도와줄 사람이 있습니까?

도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

문안 인사,

카시오
 

돕다!

누군가 이 표시기를 다시 칠하지 않도록 도와줄 수 있습니까?

파일:
pi_bg_v2.mq4  3 kb
 

...

디컴파일된 코드지만 어쨌든 이 스레드를 보세요. https://www.mql5.com/en/forum/179650

또 하나의 이름이 바뀐 태양풍이므로 ...

phoenix:
누군가 이 표시기를 다시 칠하지 않도록 도와줄 수 있습니까?
 

내가 게시한 내용을 코딩하는 방법에 대한 아이디어가 있습니까? 내가 참을성이 없거나 무언가가 있다면 사과드립니다. 읽었는지 알고 싶습니다.

감사해요,

매드맥스3

 

...

start() 절차 시작 시 EA에 다음과 같이 추가합니다.
if (TimeDayOfWeek(TimeCurrent())==5 && TimeCurrent()>=StrToTime("22:59")) { CloseAll(); return(0); } [/PHP]

다음을 코드에 추가합니다.

[PHP]CloseAll() 무효화

{

for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()!=MagicNumber) 계속;

//

//

//

//

//

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

{

for(int c=0; c<3; c++)

{

새로 고침 비율();

if (주문유형()==OP_BUY)

{ 이중 cp = 입찰가;}

else { cp = 묻다;}

OrderClose(OrderTicket(),OrderLots(),cp,0,Yellow);

int err=GetLastError();

if(err==4 || err==136 || err==137 || err==138 || err==146)

{

수면(5000); 계속하다;

}

부서지다;

}

부서지다;

}

}

}

그러면 포인트 2와 3이 해결됩니다(금요일 오픈 주문)

첫 번째 요점은 코딩하기가 다소 복잡합니다. 아마도 해당 규칙을 재정의해야 할 것입니다.

madmax3:
내가 게시한 내용을 코딩하는 방법에 대한 아이디어가 있습니까? 내가 참을성이 없거나 무언가가 있다면 사과드립니다. 읽었는지 알고 싶습니다.

감사해요,

매드맥스3
 

도와주세요! 오류 번호 = 4103. 위치 = 10. 파일을 열 수 없습니다.

안녕,

저는 여기에서 처음이고 MT 프로그래밍도 처음입니다. 아무도 이것에 대해 나를 도울 수 있습니까?

"오류가 발생했습니다. 오류 번호 = 4103. 위치 = 10(파일을 열 수 없음) 메시지"가 나타납니다.

파일이 gif로 올바르게 저장되었지만 위의 메시지가 나타납니다. 어디에 문제가 있습니까?

코드:

void 스크린샷(int 티켓, int cmd, datetime orderOpenTime, double orderOpenPrice)

{

새로 고침 비율();

if (cmd==OP_BUY) 댓글 (DateTimeInfo(),"\n","주문 오픈 시간: ",TimeToStr(orderOpenTime,TIME_DATE|TIME_SECONDS)," 구매: ",DoubleToStr(orderOpenPrice,Digits)) ;

if (cmd==OP_SELL) 댓글 (DateTimeInfo(),"\n","주문 오픈 시간: ",TimeToStr(orderOpenTime,TIME_DATE|TIME_SECONDS)," 판매: ",DoubleToStr(orderOpenPrice,Digits)) ;

문자열 파일 이름 = Symbol()+"_"+"데모"+"_"+티켓+"_Open.gif";

int 핸들 = FileOpen(파일명,FILE_CSV|FILE_READ);

if(핸들<1)

{

if (GlobalVariableGet("_MonitorScreen_ScreenShot") != 0 )

{

if(!WindowScreenShot(filename,900,600)) Print("WindowScreenShot 오류: "+GetLastError());

}

}

그렇지 않으면 파일 닫기(핸들);

}

도움을 주시면 감사하겠습니다. 고맙습니다.

 

...

잘 작동합니다

파일은 Expert\files 하위 폴더에 있어야 하며 예제 티켓 번호 0으로 사용했으므로 전체 파일 이름은 제 예제 "EURUSD_Demo_0_Open.gif"에 있었고 문제 없이 열었습니다. FILE_CSV 및 FILE_BIN 사용). 따라서 올바른 폴더와 올바른 이름에 저장하면 코드가 정상적으로 작동합니다.

Akkinmore:
안녕,

저는 여기에서 처음이고 MT 프로그래밍도 처음입니다. 아무도 이것에 대해 나를 도울 수 있습니까?

"오류가 발생했습니다. 오류 번호 = 4103. 위치 = 10(파일을 열 수 없음) 메시지"가 나타납니다.

파일이 gif로 올바르게 저장되었지만 위의 메시지가 나타납니다. 어디에 문제가 있습니까?

코드:

void 스크린샷(int 티켓, int cmd, datetime orderOpenTime, double orderOpenPrice)

{

새로 고침 비율();

if (cmd==OP_BUY) 댓글 (DateTimeInfo(),"\n","주문 오픈 시간: ",TimeToStr(orderOpenTime,TIME_DATE|TIME_SECONDS)," 구매: ",DoubleToStr(orderOpenPrice,Digits)) ;

if (cmd==OP_SELL) 댓글 (DateTimeInfo(),"\n","주문 오픈 시간: ",TimeToStr(orderOpenTime,TIME_DATE|TIME_SECONDS)," 판매: ",DoubleToStr(orderOpenPrice,Digits)) ;

문자열 파일 이름 = Symbol()+"_"+"데모"+"_"+티켓+"_Open.gif";

int 핸들 = FileOpen(파일명,FILE_CSV|FILE_READ);

if(핸들<1)

{

if (GlobalVariableGet("_MonitorScreen_ScreenShot") != 0 )

{

if(!WindowScreenShot(filename,900,600)) Print("WindowScreenShot 오류: "+GetLastError());

}

}

그렇지 않으면 파일 닫기(핸들);

}

도움을 주시면 감사하겠습니다. 고맙습니다.
 
mladen:
잘 작동합니다. 파일은 전문가\파일 하위 폴더에 있어야 하고 저는 예시 티켓 번호 0으로 사용했습니다. 그래서 전체 파일 이름은 제 예제 "EURUSD_Demo_0_Open.gif"에 있었고 문제 없이 열렸습니다. FILE_CSV와 FILE_BIN을 함께 사용하면 OK입니다. 따라서 올바른 폴더와 올바른 이름에 저장하면 코드가 정상적으로 작동합니다.

감사해요. 예, 파일이 올바른 폴더와 올바른 이름에 저장됩니다. FILE_CSV 대신 FILE_BIN을 사용하여 오류 메시지가 다시 나타나는지 확인하려고 할 수 있습니다.

 

...

내 컴퓨터가 표시기에서 러시아어로 단어를 올바르게 표시하도록 하는 방법은 무엇입니까?...감사합니다...

사유: