에마 크로스! - 페이지 4

 

에마 크로스 버전?

SpecII:
안녕,

EMACross D1 TF의 내 포워드 테스트

건배

안녕하세요 SpecII입니다.

우리를 공유해 주셔서 대단히 감사합니다!

사용하신 EMA_CROSS의 버전은 무엇입니까?

 

여러 쌍!

SpecII:
안녕하세요 코더스구루

저는 SL 버전을 사용하지 않지만 여러 쌍의 코드를 수정하고 이중 로트에 대한 버그를 만들었습니다.

나중에 더블 로트에 대한 버그를 수정하겠습니다.

건배

다시 한 번 감사합니다 ! 여러 쌍에 대한 코드를 볼 수 있습니까?

 
codersguru:
다시 한 번 감사합니다 ! 여러 쌍에 대한 코드를 볼 수 있습니까?

안녕하세요, 코드를 게시하고 있습니다.맞나요?

감사해요

//+------------------------------------------------------------------+

//| EMA_CROSS.mq4 |

//| Coders Guru |

//| https://www.forex-tsd.com |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| TODO: Add Money Management routine |

//+------------------------------------------------------------------+

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- input parameters

extern double TakeProfit=130;

extern double Lots=1;

extern double TrailingStop=20;

extern int ShortEma = 10;

extern int LongEma = 80;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

int Crossed (double line1 , double line2)

{

static int last_direction = 0;

static int current_direction = 0;

//Don't work in the first load, wait for the first cross!

static bool first_time = true;

if(first_time == true)

{

first_time = false;

return (0);

}

if(line1>line2)current_direction = 1; //up

if(line1<line2)current_direction = 2; //down

if(current_direction != last_direction) //changed

{

last_direction = current_direction;

return (last_direction);

}

else

{

return (0); //not changed

}

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

int OrdersPerSymbol=0;

//----

int cnt, ticket;

double SEma, LEma;

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit less than 10");

return(0); // check TakeProfit

}

OrdersPerSymbol=0;

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol()==Symbol() )

{

OrdersPerSymbol++;

}

}

SEma = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);

LEma = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);

static int isCrossed = 0;

isCrossed = Crossed (LEma,SEma);

// total = OrdersTotal();

if(OrdersPerSymbol < 1)

{

if(isCrossed == 1)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"EMA_CROSS",12345,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

if(isCrossed == 2)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"EMA_CROSS",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

//OrderPrint();

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // long position is opened

{

// should it be closed?

/* REMOVED - Trailling stop only close

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position

return(0); // exit

}

*/

// check for trailing stop

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // go to short position

{

// should it be closed?

/* REMOVED - Trailling stop only close

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position

return(0); // exit

}

*/

// check for trailing stop

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

//+------------------------------------------------------------------+
 
codersguru:
안녕하세요 SpecII입니다.

우리를 공유해 주셔서 대단히 감사합니다!

사용하신 EMA_CROSS의 버전은 무엇입니까?

안녕하세요 코더스구루

저는 SL 버전을 사용하지 않지만 여러 쌍의 코드를 수정하고 이중 로트에 대한 버그를 만들었습니다.

나중에 이중 로트에 대한 버그를 수정하겠습니다.

건배

 

나에게 그것은 반전처럼 보인다.

코드는 긴 EMA가 짧은 EMA보다 클 때 구매하도록 설정됩니다.

긴 EMA가 짧은 EMA 아래로 이동할 때 매도합니다.

나는 그것이 성공적인 이유라고 생각합니다. 다른 곳에서는 정반대의 행동을 하도록 배웠기 때문입니다.

나는 또한 EA의 첫 번째 버전에서 여러 거래를 받고 있습니다. 여전히 두 번째 버전을 시도해야 합니다. 잘못된 기록 데이터 때문입니까?

오늘 밤에 테스트하겠습니다.

감사해요

 

그래서

따라서 Sema가 Lema 아래로 이동할 때 구매합니다.

Sema가 Lema 위로 이동할 때 판매

아니면 내가 다시 혼란스러워?

 

내가 ea를 붙일 때

차트에 ea를 첨부하면 ea 또는 me에 'X'(웃는 얼굴 없음)가 표시됩니다.

작동했습니다 - 플레이 전문가 버튼을 눌러야 했습니다.

 

여보세요,

저는 계정 데모로 이 EA를 테스트하고 싶습니다. 첫인상이 아주 좋습니다. 현재로서는 4개의 열린 다이어그램에도 불구하고 한 쌍만 엽니다. 그러나 거래가 열릴 때마다 긍정적인 방향으로 나아가고 있습니다. 어제부터 진술서를 첨부합니다.

 
BrunoFX:
안녕하세요, 저는 계정 데모를 통해 이 EA를 테스트하고 싶습니다. 첫인상이 아주 좋습니다. 현재로서는 4개의 열린 다이어그램에도 불구하고 한 쌍만 엽니다. 그러나 거래가 열릴 때마다 긍정적인 방향으로 나아가고 있습니다. 어제부터 진술서를 첨부합니다.

이 EA를 매직넘버를 사용하도록 수정했습니다. 그것은 한 번에 여러 쌍에 대한 거래를 제공합니다. maigc 매개변수를 쌍마다 다르게 변경하십시오.

파일:
 

안녕하세요 칼렌조입니다.

이 수정을 주셔서 감사합니다. 항상 빠르고 효과적입니다. 응원합니다.