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

 

안녕.

나는 당신의 트릭을 배우고 당신에게 내 트릭을 보여주기를 고대하고 있습니다.

 
CodeMuncher:
안녕. 나는 당신의 트릭을 배우고 당신에게 내 트릭을 보여주기를 고대하고 있습니다.

이 포럼에서 많은 훌륭한 자료를 찾을 수 있습니다.

검색 기능을 제한 없이 읽고 사용하세요!!!

무엇이든 자유롭게 물어보세요... 많은 훌륭한 기여자/조력자가 여기에 있습니다.

FerruFx

 
fireslayer26:
이 코드에서는 45핍에 대해 후행 정지가 설정되어 있습니다. 그러나 후행 정지는 45핍을 이동할 때까지 활성화되지 않는 것 같습니다. 거래가 이루어질 때 후행 정지가 활성화되도록 변경하려면 어떻게 해야 합니까?

extern string Remark1 = "== Main Settings ==";

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = true;

extern double Lots = 4;

extern int Slippage = 2;

extern bool UseStopLoss = false;

extern int StopLoss = 100;

extern bool UseTakeProfit = false;

extern int TakeProfit = 15;

extern bool UseTrailingStop = true;

extern int TrailingStop = 45;

extern bool MoveStopOnce = False;

extern int MoveStopWhenPrice = 50;

extern int MoveStopTo = 1;

extern int MaxConcurrentTrades = 2;

//Version 2.01

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start()

{

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

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

//| Variable End |

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

//Check position

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderStopLoss() > Point * TrailingStop) {

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

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

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

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

빨간색 으로 변경됨

 

빨간색으로 변경했지만 이제 EA가 작동하지 않는 것 같습니다. 여러분이 볼 수 있도록 전체 EA를 게시하겠습니다. 감사해요!

파일:
williams_ea.mq4  12 kb
 

orderstoploss 뒤에 ()를 넣어야 합니다.

 

쿨, 해냈어!

이 지표는 어떻습니까....

여는 방법에 따라 가격이 다른 색상으로 표시되도록 수정할 수 있습니까? 이전 막대보다 높게 열리면 가격이 녹색이 되고, 낮으면 빨간색이 되며, 그마저도 노란색이 됩니다. 이 색상을 선택할 수 있습니까? 또한 6개 대신 10개의 구멍을 표시하도록 확장할 수 있습니까?

또한 EA에서 방금 수정한 "후행 정지를 활성화하기 위한 핍"과 같은 입력 설정을 어떻게 입력합니까? 나는 이것을 다른 EA에 가지고 있지만 그것을 코딩하는 방법을 확신하지 못합니다.

파일:
period_open.mq4  23 kb
 

주문 설명()

주문 티켓()

주문량()

오더스톱로스()

오더테이크프로핏()

주문오픈타임()

이것들은 모두 잠재적인 주문 필터링 도구입니다.

이러한 특정 거래의 또 다른 점은 무엇입니까?

 
Ronald Raygun:
주문 설명()

주문 티켓()

주문량()

오더스톱로스()

오더테이크프로핏()

주문오픈타임()

이것들은 모두 잠재적인 주문 필터링 도구입니다.

이러한 특정 거래의 또 다른 점은 무엇입니까?

주문 필터링에 가장 중요한 두 가지는 OrderSymbol() 및 OrderMagicNumber()입니다. 또 다른 참고 사항은 OrderComment()입니다.

가장 좋은 방법은 이 중 하나를 메타에디터에 입력하고 asnd라는 단어를 클릭한 다음 F1을 누르는 것입니다. 그렇게 하면 도움말이 표시되고 모든 주문 기능 이 나열됩니다.

즐거운 프로그래밍,

성공자

 

주문 주석 사용

OrderComment()를 사용하여 거래를 식별할 때 주의하십시오. 때로는 브로커가 댓글에 문자를 추가합니다.

사용하는 것이 가장 좋습니다

if (StringFind(OrderComment(), UserComment, 0) > 0)

{

// OrderComment에서 찾은 UserComment로 식별된 주문

}

대신에

if (OrderComment() == UserComment)

{

// 주문은 UserComment로 식별될 수 있습니다.

// 브로커가 OrderComment를 변경하지 않은 경우

}

로버트

 

비이븐에서 거래 마감

..............