묻다! - 페이지 11

 

당신은 EA가 통신할 수 있는 서버로서 용이하게 하는 스크립트나 무언가를 갖는 것에 대해 이야기하고 있습니다. 나는 메타 인용문이 그런 것을 생각해 내기까지 시간이 걸릴 것이라고 생각합니다. 그러나 mql4.com을 보면 내가 말한 기능인 GlobalVariableSetOnCondition()이 실행 시 원자적이라고 합니다. 이를 통해 내가 필요한 작업을 수행하는 일련의 기능을 생각해낼 수 있습니다.

 

누군가 나를 도울 수 있습니까? https://www.mql5.com/en/forum/174184 ?

 

도움말 - 0분할 ???

안녕하세요 코더 여러분...

이 오류를 해결하려면 어떻게 해야 하나요? 0 나누기?

도움을 주셔서 감사합니다...

파일:
ok.gif  16 kb
error.gif  16 kb
ttm_stoch.mq4  5 kb
 

제이마

안녕하세요 codersguru

EA 코드에서 ema 대신 jma를 사용할 수 있습니까?

 
 

도움이 필요합니다 - 조정된 MACD

RSI 값을 기준으로 신호선 을 조정하는 표시기를 만들려고 합니다. 정말 조정된 MACD에 다른 신호 라인을 그리고 일반 신호 라인을 그대로 두고 싶습니다.

편집하다:

같은 창에 RSI 선(첫 번째 단계)을 그리는 표시기가 있습니다. 그러나 어떤 이유로 마지막 기간을 그리지 않습니다. 첨부를 참조하십시오.

파일:
 

어쨌든 도움이 될 것입니다

herel은 문제가 있는 약간의 코드입니다//// Northfinace에 로드하면 작동하고 다시는 거래를 하지 않습니다... 하지만 Interbank에서는 아무 것도 하지 않습니다... 사용하는 반전 시스템입니다. kama .0005는 반전 핍입니다... 처음 로드했을 때 노스파이낸스에서 1개의 거래를 완벽하게 만들었기 때문에 무슨 일이 일어나고 있는지 모르겠습니다. 하지만 이미 이루어졌어야 하는 기존 거래였습니다...

 

코드

#property copyright "Expert Advisor Builder"

#속성 링크 "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

외부 정수 MagicNumber = 0;

extern bool SignalMail = 거짓;

extern bool EachTickMode = True;

extern 이중 로트 = 1;

extern int 미끄러짐 = 3;

extern bool StopLossMode = True;

extern int 손절매 = 40;

extern bool TakeProfitMode = False;

외부 정수 TakeProfit = 60;

extern bool TrailingStopMode = True;

extern int TrailingStop = 35;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

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 = iCustom(NULL, 0, "KAMATEST", 3, 2, 0.0005, 0, 현재 + 0);

이중 Var2 = iCustom(NULL, 0, "KAMA CCI", 14, 0, 현재 + 0);

이중 Var3 = iCustom(NULL, 0, "카마르시", 14, 0, 현재 + 0);

이중 구매1_1 = Var1 ;

이중 구매1_2 = 25;

이중 구매2_1 = Var2 ;

이중 구매2_2 = 80;

이중 구매3_1 = Var3 ;

이중 구매3_2 = 50;

이중 Sell1_1 = Var1 ;

이중 판매1_2 = -25;

이중 Sell2_1 = Var2 ;

이중 판매2_2 = -80;

이중 Sell3_1 = Var3 ;

이중 Sell3_2 = -50;

이중 CloseBuy1_1 = Var1 ;

이중 CloseBuy1_2 = -25;

이중 CloseBuy2_1 = Var2 ;

이중 CloseBuy2_2 = -80;

이중 CloseBuy3_1 = Var3 ;

이중 CloseBuy3_2 = -50;

이중 CloseSell1_1 = Var1 ;

이중 CloseSell1_2 = 25;

이중 CloseSell2_1 = Var2 ;

이중 CloseSell2_2 = 80;

이중 CloseSell3_1 = Var3 ;

이중 CloseSell3_2 = 50;

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

//| 변수 끝 |

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

//위치 확인

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 && CloseBuy2_1 <= CloseBuy2_2 && CloseBuy3_1 <= CloseBuy3_2) 주문 = 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(TrailingStopMode && TrailingStop > 0) {

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

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

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

if (!EachTickMode) BarCount = 막대;

계속하다;

}

}

}

} 또 다른 {

//닫다

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

//| 시그널 비긴(엑시트 매도) |

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

if (CloseSell1_1 >= CloseSell1_2 && CloseSell2_1 >= CloseSell2_2 && CloseSell3_1 >= CloseSell3_2) 주문 = 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(TrailingStopMode && TrailingStop > 0) {

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

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

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

if (!EachTickMode) BarCount = 막대;

계속하다;

}

}

}

}

}

}

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

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

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

if (구매1_1 >= 구매1_2 && 구매2_1 >= 구매2_2 && 구매3_1 >= 구매3_2) 주문 = SIGNAL_BUY;

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

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

//| 신호 종료 |

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

//구입하다

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

if(!IsTrade) {

// 여유 여백 확인

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

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

리턴(0);

}

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

if (TakeProfitMode) 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 (StopLossMode) StopLossLevel = Bid + StopLoss * 포인트; 그렇지 않으면 StopLossLevel = 0.0;

if (TakeProfitMode) 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);

}

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

 

나는 전문가에서 표시기의 .0005 값을 변경했습니다. 채널 라인만 궁극적으로 레벨이 .0005의 경우 25,-25, .0006의 경우 30,,-30을 변경하는 데 필요한 것이므로 에...

 

손익분기점 및 후행 정지 문제

여보세요,

저는 Codersguru의 MQL4 튜토리얼을 사용하여 코딩을 배우고 있으며 "My_First_EA"를 작업 중입니다. 정말 제 첫 EA입니다. 그것은 잘 작동하지만 손익분기점을 쓰려고하는데 그것을 알아낼 수 없습니다. 내가 가진 문제는 손익분기점은 후행 정지점처럼 가격을 따른다는 것입니다. 15핍을 만들 때 1핍 이익을 유지하기 위해 초기 손절매를 이동하고(예를 들어), 후행 정지가 25핍 이익에서 작동하기 시작할 때까지 손절매가 손익분기점(1핍 이익)에 머물기를 원합니다. 그런 다음 후행 정지가 모든 이익 핍을 이동하는 평소와 같이 작동하기를 원합니다. 문제가 "OrderStopLoss()"일 수 있다고 생각하지만 더 이상 아무것도 모릅니다. 내 두뇌는 머쉬입니다. 고맙습니다

다음은 내가 수행한 관련 코드입니다.

외부 이중 TrailingStop=25.0;

외부 이중 BreakEvenProfit=15;

외부 이중 BreakEvenStop=1;

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

여기 내 항목 및 주문 열기 코드가 제대로 작동합니다.

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

(cnt=0;cnt<total;cnt++)

{

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

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

{

if(OrderType()==OP_BUY)//롱포지션 오픈

{

// 닫아야 하나?

if (FSAR > FMA) //나의 종료 신호

{

//----CLOSE LONG POSITION이 잘 작동합니다.

OrderClose(OrderTicket(),OrderLots(),Bid,3,Magenta);

return(0);//종료

}

////////////////////아래 문제 영역입니다/////////

//---- 손익분기점 긴 위치 확인 ------

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

{

if (OrderStopLoss() < OrderOpenPrice()+ BreakEvenStop*Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + BreakEvenStop*Point,OrderTakeProfit(),0,Yellow);

리턴(0);

}

}

//-----여기 아래의 모든 것은 일반적인 후행 정지로 작동합니다.

//---- 후행 정지 LONG POSITION 확인

if(TrailingStop>0)

{

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

{

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

{

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

리턴(0);

}

}

}

}

else//숏 포지션으로 이동

사유: