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

 

작성하는 EA 유형에 따라 스프레드도 계속해서 저장해야 할 수도 있습니다. 그렇지 않으면 쓸모가 없다

 

HIGH [0] -- 시작하는 현재 막대

낮음, 잘 모르겠음, 낮음[1]

 

OrderSend(),OrderModify()를 넣는 올바른 순서

하루 전 포럼에서 OrderSend() 및 OrderModify() 함수 에 대한 주제를 읽었습니다.

이 주제는 왜 일부 EA는 작동하고 다른 EA는 작동하지 않는지에 대한 단서를 제공하며 OrderSend() 및 OrderModify() 함수가 제대로 작성되었는지 확인하는 방법이 궁금합니다. 예가 있습니까?

 

안녕 모두...

MT4의 모든 쌍 목록을 얻기 위해 코딩하는 방법을 알려주십시오.

감사해요

찰스

 
sunshineh:
안녕,

나는 Ask[1]을 쓰는 것이 옳지 않지만 마지막 틱에서 Ask-Price를 어떻게 얻을 수 있습니까?

고맙습니다!

틱을 실시간으로 저장한 다음 EA 또는 표시기에서 액세스해야 합니다. 당신이 여전히 관심이 있다면 나는 당신을 위해 예제를 코딩하려고 할 수 있습니다.

 
DooMGuarD:
안녕 모두...

MT4의 모든 쌍 목록을 얻기 위해 코딩하는 방법을 알려주십시오.

감사해요

찰스

시간을 들이세요. Mql5에서 하는 것이 더 쉬울 것 같으니 일이 해결될 때까지 기다리세요.

 

변수에서 매직 트렌드 값 가져오기...

안녕!!

저는 EA에서 일하고 있고 변수에서 마법의 추세 표시기 값을 얻을 수 있는 방법이 궁금합니다. 분명히 iMA가 이동 평균에 대해 수행하는 것처럼 마술 추세에 대한 기본 기능 이 없습니다....

지금까지는 처음부터 코딩해야 하는 것 같습니다. 하지만 수학에 대한 정보를 찾을 수 없습니다!

누군가 도울 수 있습니까?

정말 감사합니다!!!

 
atch3000:
안녕!!

저는 EA에서 일하고 있고 변수에서 마법의 추세 표시기 값을 얻을 수 있는 방법이 궁금합니다. 분명히 iMA가 이동 평균에 대해 수행하는 것처럼 마술 추세에 대한 기본 기능이 없습니다....

지금까지는 처음부터 코딩해야 하는 것 같습니다. 하지만 수학에 대한 정보를 찾을 수 없습니다!

누군가 도울 수 있습니까?

정말 감사합니다!!!

MQL4에서 ICustom 함수를 사용 하는 방법에 대한 정보를 찾으십시오. 이 기능을 사용하면 EA에서 외부 표시기를 호출할 수 있습니다.

-가이버

 

로봇 - Automat EA 약 2 이동 평균 MA 빠르고 느림

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

외부 정수 MagicNumber = 0;

extern bool SignalMail = 거짓;

extern bool EachTickMode = True;

extern 이중 랏 = 0.2;

extern int 미끄러짐 = 3;

extern bool UseStopLoss = True;

extern int 손절매 = 15;

extern bool UseTakeProfit = True;

외부 정수 TakeProfit = 30;

extern bool UseTrailingStop = True;

extern int TrailingStop = 20;

int BarCount;

정수 현재;

bool TickCheck = 거짓;

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

//| 전문가 초기화 기능 |

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

정수 초기화() {

BarCount = 막대;

if (EachTickMode) 현재 = 0; 그렇지 않으면 현재 = 1;

리턴(0);

}

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

//| 전문가 초기화 해제 기능 |

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

정수 초기화() {

리턴(0);

}

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

//| 전문가 시작 기능 |

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

정수 시작() {

정수 주문 = SIGNAL_NONE;

int 합계, 티켓;

이중 StopLossLevel, TakeProfitLevel;

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

총계 = OrdersTotal();

주문 = SIGNAL_NONE;

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

//| 변수 시작 |

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

이중 Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 구매1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 구매1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

이중 CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, 현재 + 1);

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

//| 변수 끝 |

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

//위치 확인

bool IsTrade = 거짓;

for (int i = 0, i < 총계, i ++) {

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

if(주문 유형() <= OP_SELL && 주문 기호() == 기호()) {

IsTrade = 사실;

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

//닫다

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

//| 시그널 비긴(Exit Buy) |

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

if (CloseBuy1_1 > CloseBuy1_2 && False) 주문 = SIGNAL_CLOSEBUY;

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

//| 시그널 종료(Exit Buy) |

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

if (주문 == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (막대 != BarCount))) {

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

if (SignalMail) SendMail("[신호 경고]", "[" + Symbol() + "] " + DoubleToStr(입찰가, 숫자) + " 매수 종료");

if (!EachTickMode) BarCount = 막대;

IsTrade = 거짓;

계속하다;

}

//후행 정지

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > 포인트 * TrailingStop) {

if(OrderStopLoss() < 입찰 - 포인트 * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), 입찰 - 포인트 * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = 막대;

계속하다;

}

}

}

} 또 다른 {

//닫다

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

//| 시그널 비긴(Exit Sell) |

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

if (CloseSell1_1 > CloseSell1_2False) 주문 = SIGNAL_CLOSESELL;

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

//| 시그널 종료(엑시트 매도) |

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

if (주문 == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (막대 != BarCount))) {

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

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

if (!EachTickMode) BarCount = 막대;

IsTrade = 거짓;

계속하다;

}

//후행 정지

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - 묻기) > (포인트 * TrailingStop)) {

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

OrderModify(OrderTicket(), OrderOpenPrice(), 묻기 + 포인트 * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = 막대;

계속하다;

}

}

}

}

}

}

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

//| 시그널 비긴(진입) |

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

if (Buy1_1 < Buy1_2 && False) 주문 = SIGNAL_BUY;

if (Sell1_1 < Sell1_2 && False) 주문 = SIGNAL_SELL;

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

//| 신호 종료 |

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

//구입하다

if (주문 == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (바 != BarCount)))) {

if(!IsTrade) {

// 여유 여백 확인

if (AccountFreeMargin() < (1000 * 랏)) {

Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());

리턴(0);

}

if (UseStopLoss) StopLossLevel = 묻기 - StopLoss * 포인트; 그렇지 않으면 StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = 묻기 + TakeProfit * 포인트; 그렇지 않으면 TakeProfitLevel = 0.0;

티켓 = OrderSend(Symbol(), OP_BUY, lot, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(티켓 > 0) {

if (OrderSelect(티켓, SELECT_BY_TICKET, MODE_TRADES)) {

Print("구매 주문이 열렸습니다 : ", OrderOpenPrice());

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

} 또 다른 {

Print("구매 주문 열기 오류: ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = 막대;

리턴(0);

}

}

//팔다

if (주문 == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (막대 != BarCount))) {

if(!IsTrade) {

// 여유 여백 확인

if (AccountFreeMargin() < (1000 * 랏)) {

Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());

리턴(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * 포인트; 그렇지 않으면 StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = 입찰가 - TakeProfit * 포인트; 그렇지 않으면 TakeProfitLevel = 0.0;

티켓 = OrderSend(Symbol(), OP_SELL, lot, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(티켓 > 0) {

if (OrderSelect(티켓, SELECT_BY_TICKET, MODE_TRADES)) {

Print(" SELL 주문 이 열렸습니다 : ", OrderOpenPrice());

if (SignalMail) SendMail("[신호 경고]", "[" + Symbol() + "] " + DoubleToStr(입찰가, 숫자) + " 공개 매도");

} 또 다른 {

Print("판매 주문 열기 오류: ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = 막대;

반환(0);

}

}

if (!EachTickMode) BarCount = 막대;

반환(0);

}

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

// 어디에 오류가 있는지 모르기 때문에 도와주세요. 감사해요

 

어떤 오류가 발생합니까?

사유: