에마 크로스! - 페이지 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 매개변수를 쌍마다 다르게 변경하십시오.

파일:
 

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

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