コーディングのヘルプ - ページ 390 1...383384385386387388389390391392393394395396397...786 新しいコメント tfi_markets 2014.11.07 10:46 #3891 こんにちは、MT4コーダーです。 どなたか助けていただけないでしょうか。Hull moving average 2 strict nmc " インジケータをEAに実装しようとしています。 私が直面している問題は、レポートログによると、インディケータがMT4に何度もロードされ、さらにEAが取引を開始しないことです。私が知る限り、iCustom indicatorの 呼び出しの問題が根本的な原因である可能性があります。 私が試しているのは、このようなことです。 EAは、ハル移動平均2 strict nmcが緑の時にLONGになり、ハル移動平均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 Hull variation 2 EA Hull variation 2 indicator Mladen Rakic 2014.11.07 11:30 #3892 tfi_markets: こんにちは、MT4コーダーです。 どなたか助けて頂けないでしょうか。Hull moving average 2 strict nmc " インジケータをEAに実装しようとしています。私が直面している問題は、レポートログによると、インディケータがMT4に何度も読み込まれ、さらにEAがトレードを開始しないことです。私が知る限り、iCustom indicatorの呼び出しの問題が根本的な原因である可能性があります。私が試しているのは、このようなことです。EAは、Hull moving average 2 strict nmcが緑の時にLONGになり、Hull moving average 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 パラメータが 1つ足りません(最初のパラメータ、TimeFrameパラメータ)。iCustom()コールを次のように変更します。 iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMAPeriod, HMAPrice,HMASpeed,0,2,0); とすればOKです。 tfi_markets 2014.11.07 17:26 #3893 Mladenさん、こんにちは。 ありがとうございます。 ご指摘の内容を実行したところ、エラーはなくなりました。しかし、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 コーディングの方法は? EAが複数のペアで実行されない、助けが必要 madopter 2014.11.07 18:51 #3894 どなたか、1pipの利益が10単位の通貨となるような、異なるペアのロットサイズを計算するコードを教えていただけませんか?例えば、"ProfitPerPip = 10 "の場合、EURUSDのロットは1.00になります。 ありがとうございました。 Mladen Rakic 2014.11.07 20:18 #3895 tfi_markets: こんにちは、Mladenです。 ありがとうございました。ご指摘の内容を実行したところ、エラーはなくなりました。しかし、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 09: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 } Mladenさん、こんにちは。 またまたお邪魔してしまいました、今までの提案ありがとうございました 以下のように実装してみましたが、残念ながらトレンドの変化をうまくキャッチできていないようです。 買い注文を出すときに暴走してしまうのです、添付のスクリーンショットをご覧ください。 注文を開くためのコード。 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 MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Limiting one entry per Mladen Rakic 2014.11.08 09:31 #3897 tfi_markets: こんにちは、Mladenさん。またまたお邪魔してしまいました、今までご指摘ありがとうございました 以下のように実装してみましたが、残念ながらトレンドの変化をうまくキャッチできていないようです。 買い注文を出すときに暴走してしまうので、添付のスクリーンショットをご覧ください。 注文を開くためのコード。 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 10:40 #3898 Mql5の素朴な疑問なのですが、サブウィンドウの上に表示されるインジケータの値やラベルを隠すにはどうしたらいいのでしょうか?mql4では、"SetIndexLabel(0,NULL); "でできることは知っていますが、mt5では見つけることができません。ありがとうございました。 Mladen Rakic 2014.11.08 11:14 #3899 airquest: Mql5の素朴な疑問ですが、サブウィンドウの上に表示されるインジケータの値やラベルを隠すにはどうしたらいいのでしょうか?mql4では、"SetIndexLabel(0,NULL); "とありますが、mt5では見つけられませんでした。ありがとうございました。 エアクエスト PlotIndexSetInteger(0,PLOT_SHOW_DATA,false); を使用します。 pking25 2014.11.08 16:24 #3900 Mladenさん、こんにちは。 メタトレーダーの最新号が出る前に使っていたエキスパートを添付します。 今、それは動作しません。 あなたの魔法の杖で、もう一度使えるようにしていただけませんか? もし可能なら、どなたにも使っていただけると嬉しいです。 ファイル: manualordermanager_v8.mq4 13 kb manualordermanager_v8.ex4 16 kb 1...383384385386387388389390391392393394395396397...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、MT4コーダーです。
どなたか助けていただけないでしょうか。Hull moving average 2 strict nmc " インジケータをEAに実装しようとしています。
私が直面している問題は、レポートログによると、インディケータがMT4に何度もロードされ、さらにEAが取引を開始しないことです。私が知る限り、iCustom indicatorの 呼び出しの問題が根本的な原因である可能性があります。
私が試しているのは、このようなことです。
EAは、ハル移動平均2 strict nmcが緑の時にLONGになり、ハル移動平均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コーダーです。
どなたか助けて頂けないでしょうか。Hull moving average 2 strict nmc " インジケータをEAに実装しようとしています。
私が直面している問題は、レポートログによると、インディケータがMT4に何度も読み込まれ、さらにEAがトレードを開始しないことです。私が知る限り、iCustom indicatorの呼び出しの問題が根本的な原因である可能性があります。
私が試しているのは、このようなことです。
EAは、Hull moving average 2 strict nmcが緑の時にLONGになり、Hull moving average 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
パラメータが 1つ足りません(最初のパラメータ、TimeFrameパラメータ)。iCustom()コールを次のように変更します。
iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMAPeriod, HMAPrice,HMASpeed,0,2,0);
とすればOKです。
Mladenさん、こんにちは。
ありがとうございます。
ご指摘の内容を実行したところ、エラーはなくなりました。しかし、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);
}
}
どなたか、1pipの利益が10単位の通貨となるような、異なるペアのロットサイズを計算するコードを教えていただけませんか?例えば、"ProfitPerPip = 10 "の場合、EURUSDのロットは1.00になります。
ありがとうございました。
こんにちは、Mladenです。
ありがとうございました。
ご指摘の内容を実行したところ、エラーはなくなりました。しかし、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
}
Mladenさん、こんにちは。
またまたお邪魔してしまいました、今までの提案ありがとうございました
以下のように実装してみましたが、残念ながらトレンドの変化をうまくキャッチできていないようです。
買い注文を出すときに暴走してしまうのです、添付のスクリーンショットをご覧ください。
注文を開くためのコード。
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;
}
}
}
}
よろしくお願いいたします。
こんにちは、Mladenさん。
またまたお邪魔してしまいました、今までご指摘ありがとうございました
以下のように実装してみましたが、残念ながらトレンドの変化をうまくキャッチできていないようです。
買い注文を出すときに暴走してしまうので、添付のスクリーンショットをご覧ください。
注文を開くためのコード。
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); を使用します。
Mladenさん、こんにちは。 メタトレーダーの最新号が出る前に使っていたエキスパートを添付します。 今、それは動作しません。
あなたの魔法の杖で、もう一度使えるようにしていただけませんか? もし可能なら、どなたにも使っていただけると嬉しいです。