코딩 도움말 - 페이지 390 1...383384385386387388389390391392393394395396397...786 새 코멘트 tfi_markets 2014.11.07 11:46 #3891 MT4 코더 여러분, 안녕하세요. 누군가가 나를 도울 수 있는지 궁금합니다. EA에 "선체 이동 평균 2 엄격한 nmc" 표시기를 구현하려고 합니다. 내가 직면한 문제는 보고서 로그에 따라 지표가 MT4에 계속 로드되고 EA가 거래를 시작하지 않는다는 것입니다. 내가 아는 한 iCustom 표시기 호출의 문제가 근본 원인일 수 있습니다. 이것이 내가 하려고 하는 것입니다: EA는 Hull 이동 평균 2 strict nmc가 녹색일 때 LONG이 되고 Hull 이동 평균 2 strict nmc가 빨간색이면 short가 됩니다. extern int HMAPeriod = 35; extern int HMAPrice = 0; // PRICE_CLOSE extern double HMASpeed = 2; [/CODE] [CODE] // Forex TSD Hull Moving Average double hma0 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 0); double hma1 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 1); double hma2 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 2); Buy = (hma0 > hma1 && hma1 > hma2); Sell = (hma0 < hma1 && hma1 < hma2); 당신의 도움에 미리 감사드립니다. Coding help Requests & Ideas 엘리트 지표 :) Mladen Rakic 2014.11.07 12:30 #3892 tfi_markets: MT4 코더 여러분, 안녕하세요. 누군가가 나를 도울 수 있는지 궁금합니다. EA에 "선체 이동 평균 2 엄격한 nmc" 표시기를 구현하려고 합니다. 내가 직면한 문제는 보고서 로그에 따라 지표가 MT4에 계속 로드되고 EA가 거래를 시작하지 않는다는 것입니다. 내가 아는 한 iCustom 표시기 호출의 문제가 근본 원인일 수 있습니다. 이것이 내가 하려고 하는 것입니다: EA는 Hull 이동 평균 2 strict nmc가 녹색일 때 LONG이 되고 Hull 이동 평균 2 strict nmc가 빨간색이면 short가 됩니다. extern int HMAPeriod = 35; extern int HMAPrice = 0; // PRICE_CLOSE extern double HMASpeed = 2; [/CODE] [CODE] // Forex TSD Hull Moving Average double hma0 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 0); double hma1 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 1); double hma2 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 2); Buy = (hma0 > hma1 && hma1 > hma2); Sell = (hma0 < hma1 && hma1 < hma2); 당신의 도움에 미리 감사드립니다. tfi_markets 하나의 매개변수 가 누락되었습니다(첫 번째 매개변수인 TimeFrame 매개변수). iCustom() 호출을 다음과 같이 변경합니다. iCustom(Symbol(),0,"선체 이동 평균 2 엄격한 nmc", "", HMAPeriod, HMAPrice,HMASpeed,0,2,0); 그리고 그것은 잘 작동합니다 tfi_markets 2014.11.07 18:26 #3893 안녕 믈라덴 당신의 도움을 주셔서 대단히 감사합니다! 귀하의 제안을 구현했으며 오류가 사라졌습니다. 매우 좋습니다. 그러나 EA는 불행히도 여전히 거래를 열지 않습니다. 주문 로직을 검토해 주시면 감사하겠습니다. 제가 여기서 뭔가 잘못하고 있는 것은 아닐까요? int Extra_Pips=1; extern int HMA_Period=21; extern int HMA_Price=PRICE_CLOSE; //0 extern double HMA_Speed= 2; //+------------------------------------------------------------------+ //| ORDER Logic / Indicators | //+------------------------------------------------------------------+ if(openedOrders<=0) { // Forex TSD Hull Moving Average double hma0 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,0); double hma1 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,1); double hma2 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,2); //+------------------------------------------------------------------+ //| BUY | //+------------------------------------------------------------------+ if(hma0>hma1 && hma1>hma2) { // Wait some pips double pipsExtra1=Extra_Pips*Point; // Get distance from cross signal OpenBuy(); return(0); } //+------------------------------------------------------------------+ //| SELL | //+------------------------------------------------------------------+ if(hma0<hma1 && hma1<hma2) { // Wait some pips double pipsExtra2=Extra_Pips*Point; // Get distance from cross signal OpenSell(); return(0); } } Coding help Help with adding alert Parabolic SAR code! madopter 2014.11.07 19:51 #3894 누군가 각 핍 이익이 10 통화 단위가 되도록 다른 쌍에 대한 로트 크기를 계산하는 코드를 알려주시겠습니까? 예를 들어 "ProfitPerPip = 10"인 경우 EURUSD의 랏은 1.00입니다. 고맙습니다. Mladen Rakic 2014.11.07 21:18 #3895 tfi_markets: 안녕 믈라덴 당신의 도움을 주셔서 대단히 감사합니다! 귀하의 제안을 구현했으며 오류가 사라졌습니다. 매우 좋습니다. 그러나 EA는 불행히도 여전히 거래를 열지 않습니다. 주문 로직을 검토해 주시면 감사하겠습니다. 제가 여기서 뭔가 잘못하고 있는 것은 아닐까요? int Extra_Pips=1; extern int HMA_Period=21; extern int HMA_Price=PRICE_CLOSE; //0 extern double HMA_Speed= 2; //+------------------------------------------------------------------+ //| ORDER Logic / Indicators | //+------------------------------------------------------------------+ if(openedOrders<=0) { // Forex TSD Hull Moving Average double hma0 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price,HMA_Speed,0,2,0); double hma1 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,1); double hma2 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,2); //+------------------------------------------------------------------+ //| BUY | //+------------------------------------------------------------------+ if(hma0>hma1 && hma1>hma2) { // Wait some pips double pipsExtra1=Extra_Pips*Point; // Get distance from cross signal OpenBuy(); return(0); } //+------------------------------------------------------------------+ //| SELL | //+------------------------------------------------------------------+ if(hma0<hma1 && hma1<hma2) { // Wait some pips double pipsExtra2=Extra_Pips*Point; // Get distance from cross signal OpenSell(); return(0); } } tfi_markets 가장 간단한 방법은 트렌드 버퍼(버퍼 3)를 확인 하는 것입니다. 이 같은 : double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); if (trendc!=trendp) { if (trendc == 1) // code for buy if (trendc == -1) // code for sell } tfi_markets 2014.11.08 10:04 #3896 mladen: tfi_markets 가장 간단한 방법은 트렌드 버퍼(버퍼 3)를 확인하는 것입니다. 이 같은 : double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); if (trendc!=trendp) { if (trendc == 1) // code for buy if (trendc == -1) // code for sell } 안녕 믈라덴 다시한번 번거롭게 해서 죄송합니다 지금까지 추천해주셔서 정말 감사합니다 아래와 같이 구현해 보았으나 아쉽게도 트렌드 변화를 제대로 파악하지 못하고 있는 것 같고, 구매 주문을 열 때 미친 듯이 달리고 있습니다. 첨부된 스크린샷을 참조하십시오. 주문 개시 코드: if(openedOrders<=0) { // Forex TSD Hull Moving Average double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); if(trendc!=trendp) { if(trendc==1) // code for buy OpenBuy(); return(0); } if(trendc==-1) // code for sell { OpenSell(); return(0); } } //+------------------------------------------------------------------+ //| Open Buy | //+------------------------------------------------------------------+ void OpenBuy() { double lbStop = 0; if(lStopLoss>0) lbStop = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)-lStopLoss *pPoint*pipMultiplier,digit); double lbTake = 0; if(lTakeProfit>0) lbTake = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)+lTakeProfit*pPoint*pipMultiplier,digit); if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; } // // // if(!EcnBroker) dummyResult=OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,lbStop,lbTake,ExpertName,MAGIC,0,clOpenBuy); else { int buyTicket= OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenBuy); if(buyTicket>= 0) bool buyOrderMod=OrderModify(buyTicket,OrderOpenPrice(),lbStop,lbTake,0,CLR_NONE); if(buyOrderMod==false) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert=StringConcatenate("Modify Buy Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts==true) Alert(ErrAlert); string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",buyTicket," Stop: ",lbStop," Profit: ",lbTake); Print(ErrLog); } } } //+------------------------------------------------------------------+ //| Open Sell | //+------------------------------------------------------------------+ void OpenSell() { double lsStop = 0; if(sStopLoss>0) lsStop = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)+sStopLoss *pPoint*pipMultiplier,digit); double lsTake = 0; if(sTakeProfit>0) lsTake = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)-sTakeProfit*pPoint*pipMultiplier,digit); if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; } //+------------------------------------------------------------------+ //| ECN Broker | //+------------------------------------------------------------------+ if(!EcnBroker) dummyResult=OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,lsStop,lsTake,ExpertName,MAGIC,0,clOpenSell); else { int sellTicket = OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenSell); if(sellTicket >= 0) bool sellOrderMod=OrderModify(sellTicket,OrderOpenPrice(),lsStop,lsTake,0,CLR_NONE); if(sellOrderMod==false) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert=StringConcatenate("Modify Sell Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts==true) Alert(ErrAlert); string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",sellTicket," Stop: ",lsStop," Profit: ",lsTake); Print(ErrLog); } } } [/CODE] Code for closing orders: [CODE] void CheckForClose() { RefreshRates(); double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); for(int i=0;i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!= MAGIC) continue; if(OrderSymbol() != s_symbol) continue; if(trendc_c!=trendp_c) // Check Trend { if(OrderType()==OP_BUY) { if(trendc_c==1) //is BUY? { bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy); if(buyClose==false) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts == true) Alert(ErrAlert); string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket()); Print(ErrLog); } } break; } } if(trendc_c!=trendp_c) // Check trend { if(OrderType()==OP_SELL) { if(trendc_c==-1) // is SELL? { bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell); if(sellClose == false) { ErrorCode = GetLastError(); ErrDesc = ErrorDescription(ErrorCode); ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts==true) Alert(ErrAlert); ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket()); Print(ErrLog); } } break; } } } } 미리 감사합니다! 파일: hma-error.jpg 108 kb Coding help Closing order programming question How to code stop Mladen Rakic 2014.11.08 10:31 #3897 tfi_markets: 안녕 믈라덴 다시한번 번거롭게 해서 죄송합니다 지금까지 추천해주셔서 정말 감사합니다 아래와 같이 구현해 보았으나 아쉽게도 트렌드 변화를 제대로 파악하지 못하고 있는 것 같고, 구매 주문을 열 때 미친 듯이 달리고 있습니다. 첨부된 스크린샷을 참조하십시오. 주문 개시 코드: if(openedOrders<=0) { // Forex TSD Hull Moving Average double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); if(trendc!=trendp) { if(trendc==1) // code for buy OpenBuy(); return(0); } if(trendc==-1) // code for sell { OpenSell(); return(0); } } //+------------------------------------------------------------------+ //| Open Buy | //+------------------------------------------------------------------+ void OpenBuy() { double lbStop = 0; if(lStopLoss>0) lbStop = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)-lStopLoss *pPoint*pipMultiplier,digit); double lbTake = 0; if(lTakeProfit>0) lbTake = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)+lTakeProfit*pPoint*pipMultiplier,digit); if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; } // // // if(!EcnBroker) dummyResult=OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,lbStop,lbTake,ExpertName,MAGIC,0,clOpenBuy); else { int buyTicket= OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenBuy); if(buyTicket>= 0) bool buyOrderMod=OrderModify(buyTicket,OrderOpenPrice(),lbStop,lbTake,0,CLR_NONE); if(buyOrderMod==false) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert=StringConcatenate("Modify Buy Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts==true) Alert(ErrAlert); string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",buyTicket," Stop: ",lbStop," Profit: ",lbTake); Print(ErrLog); } } } //+------------------------------------------------------------------+ //| Open Sell | //+------------------------------------------------------------------+ void OpenSell() { double lsStop = 0; if(sStopLoss>0) lsStop = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)+sStopLoss *pPoint*pipMultiplier,digit); double lsTake = 0; if(sTakeProfit>0) lsTake = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)-sTakeProfit*pPoint*pipMultiplier,digit); if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; } //+------------------------------------------------------------------+ //| ECN Broker | //+------------------------------------------------------------------+ if(!EcnBroker) dummyResult=OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,lsStop,lsTake,ExpertName,MAGIC,0,clOpenSell); else { int sellTicket = OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenSell); if(sellTicket >= 0) bool sellOrderMod=OrderModify(sellTicket,OrderOpenPrice(),lsStop,lsTake,0,CLR_NONE); if(sellOrderMod==false) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert=StringConcatenate("Modify Sell Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts==true) Alert(ErrAlert); string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",sellTicket," Stop: ",lsStop," Profit: ",lsTake); Print(ErrLog); } } } [/CODE] Code for closing orders: [CODE] void CheckForClose() { RefreshRates(); double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); for(int i=0;i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!= MAGIC) continue; if(OrderSymbol() != s_symbol) continue; if(trendc_c!=trendp_c) // Check Trend { if(OrderType()==OP_BUY) { if(trendc_c==1) //is BUY? { bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy); if(buyClose==false) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts == true) Alert(ErrAlert); string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket()); Print(ErrLog); } } break; } } if(trendc_c!=trendp_c) // Check trend { if(OrderType()==OP_SELL) { if(trendc_c==-1) // is SELL? { bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell); if(sellClose == false) { ErrorCode = GetLastError(); ErrDesc = ErrorDescription(ErrorCode); ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts==true) Alert(ErrAlert); ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket()); Print(ErrLog); } } break; } } } } 미리 감사합니다! 질문 : 매수 신호가 오면 매수 주문을 닫고 매도 신호가 오면 매도 주문 을 마감하는 이유는 무엇입니까? 뒤집어야 하는거 아닌가? 그리고 나는 그것이 지금 일어나는 몇 가지 일을 막을 것이라고 생각합니다. airquest 2014.11.08 11:40 #3898 Mql5에 대한 간단한 질문입니다. 하위 창 상단의 표시기 값/레이블을 어떻게 숨길 수 있습니까? mql4에서는 "SetIndexLabel(0,NULL);"이 있는 것으로 알고 있지만 mt5에서는 찾을 수 없습니다. 정말 감사합니다. Mladen Rakic 2014.11.08 12:14 #3899 airquest: Mql5에 대한 간단한 질문입니다. 하위 창 상단의 표시기 값/레이블을 어떻게 숨길 수 있습니까? mql4에서는 "SetIndexLabel(0,NULL);"이 있는 것으로 알고 있지만 mt5에서는 찾을 수 없습니다. 정말 감사합니다. 에어퀘스트 용도 : PlotIndexSetInteger(0,PLOT_SHOW_DATA,false); 그에 대한 pking25 2014.11.08 17:24 #3900 안녕하세요 믈라덴입니다. Metatrader 최신호 이전에 사용했던 전문가를 첨부합니다. 이제 작동하지 않습니다. 마법 지팡이를 그 위에 엮어 다시 작동시킬 수 있는 기회가 있다면. 할 수 있다면 누구라도 사용하게 되어 기쁩니다....좋습니다(아니면 그랬어요!) 파일: manualordermanager_v8.mq4 13 kb manualordermanager_v8.ex4 16 kb 1...383384385386387388389390391392393394395396397...786 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
MT4 코더 여러분, 안녕하세요.
누군가가 나를 도울 수 있는지 궁금합니다. EA에 "선체 이동 평균 2 엄격한 nmc" 표시기를 구현하려고 합니다.
내가 직면한 문제는 보고서 로그에 따라 지표가 MT4에 계속 로드되고 EA가 거래를 시작하지 않는다는 것입니다. 내가 아는 한 iCustom 표시기 호출의 문제가 근본 원인일 수 있습니다.
이것이 내가 하려고 하는 것입니다:
EA는 Hull 이동 평균 2 strict nmc가 녹색일 때 LONG이 되고 Hull 이동 평균 2 strict nmc가 빨간색이면 short가 됩니다.
extern int HMAPeriod = 35;
extern int HMAPrice = 0; // PRICE_CLOSE
extern double HMASpeed = 2;
[/CODE]
[CODE]
// Forex TSD Hull Moving Average
double hma0 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 0);
double hma1 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 1);
double hma2 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 2);
Buy = (hma0 > hma1 && hma1 > hma2);
Sell = (hma0 < hma1 && hma1 < hma2);
당신의 도움에 미리 감사드립니다.
MT4 코더 여러분, 안녕하세요.
누군가가 나를 도울 수 있는지 궁금합니다. EA에 "선체 이동 평균 2 엄격한 nmc" 표시기를 구현하려고 합니다.
내가 직면한 문제는 보고서 로그에 따라 지표가 MT4에 계속 로드되고 EA가 거래를 시작하지 않는다는 것입니다. 내가 아는 한 iCustom 표시기 호출의 문제가 근본 원인일 수 있습니다.
이것이 내가 하려고 하는 것입니다:
EA는 Hull 이동 평균 2 strict nmc가 녹색일 때 LONG이 되고 Hull 이동 평균 2 strict nmc가 빨간색이면 short가 됩니다.
extern int HMAPeriod = 35;
extern int HMAPrice = 0; // PRICE_CLOSE
extern double HMASpeed = 2;
[/CODE]
[CODE]
// Forex TSD Hull Moving Average
double hma0 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 0);
double hma1 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 1);
double hma2 = iCustom(Symbol(), 0, "Hull moving average 2 strict nmc", HMAPeriod, HMAPrice, HMASpeed, 0, 2, 2);
Buy = (hma0 > hma1 && hma1 > hma2);
Sell = (hma0 < hma1 && hma1 < hma2);
tfi_markets
하나의 매개변수 가 누락되었습니다(첫 번째 매개변수인 TimeFrame 매개변수). iCustom() 호출을 다음과 같이 변경합니다.
iCustom(Symbol(),0,"선체 이동 평균 2 엄격한 nmc", "", HMAPeriod, HMAPrice,HMASpeed,0,2,0);
그리고 그것은 잘 작동합니다
안녕 믈라덴
당신의 도움을 주셔서 대단히 감사합니다!
귀하의 제안을 구현했으며 오류가 사라졌습니다. 매우 좋습니다. 그러나 EA는 불행히도 여전히 거래를 열지 않습니다. 주문 로직을 검토해 주시면 감사하겠습니다. 제가 여기서 뭔가 잘못하고 있는 것은 아닐까요?
int Extra_Pips=1;
extern int HMA_Period=21;
extern int HMA_Price=PRICE_CLOSE; //0
extern double HMA_Speed= 2;
//+------------------------------------------------------------------+
//| ORDER Logic / Indicators |
//+------------------------------------------------------------------+
if(openedOrders<=0)
{
// Forex TSD Hull Moving Average
double hma0 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,0);
double hma1 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,1);
double hma2 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,2);
//+------------------------------------------------------------------+
//| BUY |
//+------------------------------------------------------------------+
if(hma0>hma1 && hma1>hma2)
{
// Wait some pips
double pipsExtra1=Extra_Pips*Point; // Get distance from cross signal
OpenBuy();
return(0);
}
//+------------------------------------------------------------------+
//| SELL |
//+------------------------------------------------------------------+
if(hma0<hma1 && hma1<hma2)
{
// Wait some pips
double pipsExtra2=Extra_Pips*Point; // Get distance from cross signal
OpenSell();
return(0);
}
}
누군가 각 핍 이익이 10 통화 단위가 되도록 다른 쌍에 대한 로트 크기를 계산하는 코드를 알려주시겠습니까? 예를 들어 "ProfitPerPip = 10"인 경우 EURUSD의 랏은 1.00입니다.
고맙습니다.
안녕 믈라덴
당신의 도움을 주셔서 대단히 감사합니다!
귀하의 제안을 구현했으며 오류가 사라졌습니다. 매우 좋습니다. 그러나 EA는 불행히도 여전히 거래를 열지 않습니다. 주문 로직을 검토해 주시면 감사하겠습니다. 제가 여기서 뭔가 잘못하고 있는 것은 아닐까요?
int Extra_Pips=1;
extern int HMA_Period=21;
extern int HMA_Price=PRICE_CLOSE; //0
extern double HMA_Speed= 2;
//+------------------------------------------------------------------+
//| ORDER Logic / Indicators |
//+------------------------------------------------------------------+
if(openedOrders<=0)
{
// Forex TSD Hull Moving Average
double hma0 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price,HMA_Speed,0,2,0);
double hma1 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,1);
double hma2 = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,2,2);
//+------------------------------------------------------------------+
//| BUY |
//+------------------------------------------------------------------+
if(hma0>hma1 && hma1>hma2)
{
// Wait some pips
double pipsExtra1=Extra_Pips*Point; // Get distance from cross signal
OpenBuy();
return(0);
}
//+------------------------------------------------------------------+
//| SELL |
//+------------------------------------------------------------------+
if(hma0<hma1 && hma1<hma2)
{
// Wait some pips
double pipsExtra2=Extra_Pips*Point; // Get distance from cross signal
OpenSell();
return(0);
}
}
tfi_markets
가장 간단한 방법은 트렌드 버퍼(버퍼 3)를 확인 하는 것입니다.
이 같은 :
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
if (trendc!=trendp)
{
if (trendc == 1) // code for buy
if (trendc == -1) // code for sell
}
tfi_markets
가장 간단한 방법은 트렌드 버퍼(버퍼 3)를 확인하는 것입니다.
이 같은 :
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
if (trendc!=trendp)
{
if (trendc == 1) // code for buy
if (trendc == -1) // code for sell
}
안녕 믈라덴
다시한번 번거롭게 해서 죄송합니다 지금까지 추천해주셔서 정말 감사합니다
아래와 같이 구현해 보았으나 아쉽게도 트렌드 변화를 제대로 파악하지 못하고 있는 것 같고,
구매 주문을 열 때 미친 듯이 달리고 있습니다. 첨부된 스크린샷을 참조하십시오.
주문 개시 코드:
if(openedOrders<=0)
{
// Forex TSD Hull Moving Average
double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
if(trendc!=trendp)
{
if(trendc==1) // code for buy
OpenBuy();
return(0);
}
if(trendc==-1) // code for sell
{
OpenSell();
return(0);
}
}
//+------------------------------------------------------------------+
//| Open Buy |
//+------------------------------------------------------------------+
void OpenBuy()
{
double lbStop = 0; if(lStopLoss>0) lbStop = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)-lStopLoss *pPoint*pipMultiplier,digit);
double lbTake = 0; if(lTakeProfit>0) lbTake = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)+lTakeProfit*pPoint*pipMultiplier,digit);
if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; }
//
//
//
if(!EcnBroker)
dummyResult=OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,lbStop,lbTake,ExpertName,MAGIC,0,clOpenBuy);
else
{
int buyTicket= OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenBuy);
if(buyTicket>= 0)
bool buyOrderMod=OrderModify(buyTicket,OrderOpenPrice(),lbStop,lbTake,0,CLR_NONE);
if(buyOrderMod==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert=StringConcatenate("Modify Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",buyTicket," Stop: ",lbStop," Profit: ",lbTake);
Print(ErrLog);
}
}
}
//+------------------------------------------------------------------+
//| Open Sell |
//+------------------------------------------------------------------+
void OpenSell()
{
double lsStop = 0; if(sStopLoss>0) lsStop = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)+sStopLoss *pPoint*pipMultiplier,digit);
double lsTake = 0; if(sTakeProfit>0) lsTake = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)-sTakeProfit*pPoint*pipMultiplier,digit);
if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; }
//+------------------------------------------------------------------+
//| ECN Broker |
//+------------------------------------------------------------------+
if(!EcnBroker)
dummyResult=OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,lsStop,lsTake,ExpertName,MAGIC,0,clOpenSell);
else
{
int sellTicket = OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenSell);
if(sellTicket >= 0)
bool sellOrderMod=OrderModify(sellTicket,OrderOpenPrice(),lsStop,lsTake,0,CLR_NONE);
if(sellOrderMod==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert=StringConcatenate("Modify Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",sellTicket," Stop: ",lsStop," Profit: ",lsTake);
Print(ErrLog);
}
}
}
[/CODE]
Code for closing orders:
[CODE]
void CheckForClose()
{
RefreshRates();
double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continue;
if(OrderSymbol() != s_symbol) continue;
if(trendc_c!=trendp_c) // Check Trend
{
if(OrderType()==OP_BUY)
{
if(trendc_c==1) //is BUY?
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
if(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
if(trendc_c!=trendp_c) // Check trend
{
if(OrderType()==OP_SELL)
{
if(trendc_c==-1) // is SELL?
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
}
}
미리 감사합니다!
안녕 믈라덴
다시한번 번거롭게 해서 죄송합니다 지금까지 추천해주셔서 정말 감사합니다
아래와 같이 구현해 보았으나 아쉽게도 트렌드 변화를 제대로 파악하지 못하고 있는 것 같고,
구매 주문을 열 때 미친 듯이 달리고 있습니다. 첨부된 스크린샷을 참조하십시오.
주문 개시 코드:
if(openedOrders<=0)
{
// Forex TSD Hull Moving Average
double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
if(trendc!=trendp)
{
if(trendc==1) // code for buy
OpenBuy();
return(0);
}
if(trendc==-1) // code for sell
{
OpenSell();
return(0);
}
}
//+------------------------------------------------------------------+
//| Open Buy |
//+------------------------------------------------------------------+
void OpenBuy()
{
double lbStop = 0; if(lStopLoss>0) lbStop = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)-lStopLoss *pPoint*pipMultiplier,digit);
double lbTake = 0; if(lTakeProfit>0) lbTake = NormalizeDouble(MarketInfo(s_symbol,MODE_ASK)+lTakeProfit*pPoint*pipMultiplier,digit);
if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; }
//
//
//
if(!EcnBroker)
dummyResult=OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,lbStop,lbTake,ExpertName,MAGIC,0,clOpenBuy);
else
{
int buyTicket= OrderSend(s_symbol,OP_BUY,LotsOptimized(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenBuy);
if(buyTicket>= 0)
bool buyOrderMod=OrderModify(buyTicket,OrderOpenPrice(),lbStop,lbTake,0,CLR_NONE);
if(buyOrderMod==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert=StringConcatenate("Modify Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",buyTicket," Stop: ",lbStop," Profit: ",lbTake);
Print(ErrLog);
}
}
}
//+------------------------------------------------------------------+
//| Open Sell |
//+------------------------------------------------------------------+
void OpenSell()
{
double lsStop = 0; if(sStopLoss>0) lsStop = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)+sStopLoss *pPoint*pipMultiplier,digit);
double lsTake = 0; if(sTakeProfit>0) lsTake = NormalizeDouble(MarketInfo(s_symbol,MODE_BID)-sTakeProfit*pPoint*pipMultiplier,digit);
if(AccountFreeMargin()<(100*Lots)) { Print("We have no money. Free Margin = ",AccountFreeMargin()); return; }
//+------------------------------------------------------------------+
//| ECN Broker |
//+------------------------------------------------------------------+
if(!EcnBroker)
dummyResult=OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,lsStop,lsTake,ExpertName,MAGIC,0,clOpenSell);
else
{
int sellTicket = OrderSend(s_symbol,OP_SELL,LotsOptimized(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,0,0,ExpertName,MAGIC,0,clOpenSell);
if(sellTicket >= 0)
bool sellOrderMod=OrderModify(sellTicket,OrderOpenPrice(),lsStop,lsTake,0,CLR_NONE);
if(sellOrderMod==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert=StringConcatenate("Modify Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Bid: ",MarketInfo(s_symbol,MODE_BID)," Ticket: ",sellTicket," Stop: ",lsStop," Profit: ",lsTake);
Print(ErrLog);
}
}
}
[/CODE]
Code for closing orders:
[CODE]
void CheckForClose()
{
RefreshRates();
double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continue;
if(OrderSymbol() != s_symbol) continue;
if(trendc_c!=trendp_c) // Check Trend
{
if(OrderType()==OP_BUY)
{
if(trendc_c==1) //is BUY?
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
if(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
if(trendc_c!=trendp_c) // Check trend
{
if(OrderType()==OP_SELL)
{
if(trendc_c==-1) // is SELL?
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
}
}
미리 감사합니다!
질문 : 매수 신호가 오면 매수 주문을 닫고 매도 신호가 오면 매도 주문 을 마감하는 이유는 무엇입니까? 뒤집어야 하는거 아닌가? 그리고 나는 그것이 지금 일어나는 몇 가지 일을 막을 것이라고 생각합니다.
Mql5에 대한 간단한 질문입니다. 하위 창 상단의 표시기 값/레이블을 어떻게 숨길 수 있습니까? mql4에서는 "SetIndexLabel(0,NULL);"이 있는 것으로 알고 있지만 mt5에서는 찾을 수 없습니다. 정말 감사합니다.
Mql5에 대한 간단한 질문입니다. 하위 창 상단의 표시기 값/레이블을 어떻게 숨길 수 있습니까? mql4에서는 "SetIndexLabel(0,NULL);"이 있는 것으로 알고 있지만 mt5에서는 찾을 수 없습니다. 정말 감사합니다.
에어퀘스트
용도 : PlotIndexSetInteger(0,PLOT_SHOW_DATA,false); 그에 대한
안녕하세요 믈라덴입니다. Metatrader 최신호 이전에 사용했던 전문가를 첨부합니다. 이제 작동하지 않습니다.
마법 지팡이를 그 위에 엮어 다시 작동시킬 수 있는 기회가 있다면. 할 수 있다면 누구라도 사용하게 되어 기쁩니다....좋습니다(아니면 그랬어요!)