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

 

답장을 보내 주셔서 감사합니다.

하지만 포지션을 닫았을 때 슬리피지가 있었다면 작동하지 않겠죠?

 
codersview:
안녕 모두,

RSI 및 MA의 EA에 문제가 있습니다.

인디케이터가 제대로 작동하는군요.. EA로 변환하고 싶은데...

나는 몇 가지를 시도했다. IndicatorCounted()는 EA에서 작동하지 않으므로 for 루프의 값을 하드 코딩하려고 했습니다(bar=0; bar<15; bar++), 올바른 RSI를 얻었지만 SMA는 정확한 값을 제공하지 않습니다...

RSI를 교차하는 SMA에 대한 코드를 첨부하고 있습니다 ...

누군가 이 지표를 EA로 변환하는 데 도움을 주실 수 있습니까?

************************************************** ************************************************** ***********************************

#속성 표시기_분리_창

#속성 표시기_버퍼 2

#property indicator_color1 잔디 그린

#property indicator_color2 다크블루

이중 ExtMapBuffer1[];

이중 ExtMapBuffer2[];

정수 초기화()

{

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);

SetIndexBuffer(1,ExtMapBuffer2);

리턴(0);

}

정수 초기화()

{

리턴(0);

}

정수 시작()

{

int 막대, 한계;

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Bars-IndicatorCounted();

for(막대=0; 막대<한계; 막대++)

ExtMapBuffer1 = iRSI(NULL,0,14,PRICE_TYPICAL,바);

for(막대=0; 막대<한계; 막대++)

ExtMapBuffer2=iMAOnArray(ExtMapBuffer1,Bars,14,0,MODE_SMA,bar);

리턴(0);

}

************************************************** ************************************************** ***********************************

감사합니다.

가네쉬

가네쉬,

시간 순서대로 막대를 수행하십시오.

대신 for(bar=0; bar<limit; bar++)

for(bar=limit-1; bar>=0; bar--) 사용

채즈머니

 

안녕

빠른 답변 감사합니다... 해봤는데 별차이가 없네요...

루프에서 Bars를 사용하는 경우에도 모든 틱 에 대해 전체 값(모든 막대에 대해)을 계산해야 하며 지연이 있을 수 있습니다. 또한 SMA 값은 0이 됩니다.

Indicator에서 IndicatorCounted()를 사용하여 새 막대에 대해서만 RSI 및 EMA를 계산하지만 EA에서는 사용할 수 없습니다.

문제의 정확한 점은 두 번째 for 루프와 iMAOnArray의 값입니다..

첫 번째 for 루프는 하드 코딩하더라도 완벽하게 작동합니다...

 
jan100:
답장을 보내 주셔서 감사합니다. 하지만 포지션을 닫았을 때 슬리피지가 있었다면 작동하지 않겠죠?

일부 브로커는 주석 필드에 [sl] 및 [tp]를 씁니다. 당신도 그것을 사용할 수 있습니다.

 

감사해요. 나는 그것을 시도합니다.

올바른 매직 번호로 마지막 마감 주문을 선택하는 방법은 무엇입니까?

 
jan100:
감사해요. 나는 그것을 시도합니다. 올바른 매직 번호로 마지막 마감 주문을 선택하는 방법은 무엇입니까?

내역 목록에서 찾으면 마감된 주문이며 전체 목록에 있는 경우 아직 열려 있습니다.

 

Ea 코드 요청: 새 위치를 열 때 이전 주문 닫기

안녕하세요, 새 위치가 열릴 때 코드를 요청하고 싶습니다. 이전 주문은 자동으로 닫힙니다. 이익 을 얻거나 추적을 사용하고 싶지 않다는 뜻입니다.

예시:

주문 매수가 열리면 이전 주문 매도가 닫힙니다.

주문 매도가 열리면 이전 주문 매수가 닫힙니다.

코드가 OrderCloseBy()라는 것을 알았지만 이 코드를 어디에 넣어야 할지 정확히 모르겠습니다.

감사해요

 
darkkiller:
안녕하세요, 새 위치가 열릴 때 코드를 요청하고 싶습니다. 이전 주문은 자동으로 닫힙니다. 이익을 얻거나 추적을 사용하고 싶지 않다는 뜻입니다.

예시:

주문 매수가 열리면 이전 주문 매도가 닫힙니다.

주문 매도가 열리면 이전 주문 매수가 닫힙니다.

코드가 OrderCloseBy()라는 것을 알았지만 이 코드를 어디에 넣어야 할지 정확히 모르겠습니다.

감사해요

문제 해결

OrderSend BUY 뒤에 넣어

{

OrderClose(OrderTicket(),OrderLots(), 입찰, 3, 보라색); // 닫기 위치

}

OrderSend SELL 뒤에 넣어

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); // 닫기 위치

}

(Fulltime247,magnumfreak) 덕분에 ForexFactory에서 얻은 다른 코드

extern int MAGICTerminal=101;

외부 이중 LOTSize=0.10;

extern string ORDERComment="주문 주석 텍스트";

//총 합계..

정수 btotal=0; 정수 합계 = 0; 정수 티켓 = 0; 이중 옷장=0; 부울 xbool;

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

{

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

if(OrderType()==OP_BUY && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){btotal++; 티켓=OrderTicket(); closelots=OrderLots();}

if(OrderType()==OP_SELL && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){stotal++; 티켓=OrderTicket(); closelots=OrderLots();}

}// END TOTAL 카운트..

if(구매에 대한 귀하의 조건)

{

if(btotal>0){OrderClose(ticket,closelots,Bid,3,CLR_NONE);}

티켓=OrderSend(Symbol(),OP_BUY,LOTSize,Ask,3,0,0,ORDERComment,MAGICTerminal,0,Magenta);

}

if(판매에 대한 귀하의 조건)

{

if(총계>0){OrderClose(티켓,클로즈,Ask,3,CLR_NONE);}

티켓=OrderSend(Symbol(),OP_SELL,LOTSize,Bid,3,0,0,ORDERComment,MAGICTerminal,0,Lime);

}
 
 

저는 MT4가 처음입니다.

shortMA가 longMA를 넘은 후 막대 수 를 계산하고 싶습니다. 이 함수를 코딩하는 방법을 아는 사람이 있습니까?

미리 감사드립니다!