MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1371 1...136413651366136713681369137013711372137313741375137613771378...1953 新しいコメント Сергей Дыбленко 2021.01.30 10:36 #13701 MakarFX:EAの最下部へ。 残念ながら増殖しません!!!(( Tretyakov Rostyslav 2021.01.30 10:41 #13702 Сергей Дыбленко:残念ながら増殖しません!!!(( この機能は、自由証拠金と指定されたリスクとの関係でロットを計算します! 何の掛け算の話ですか? Сергей Дыбленко 2021.01.30 10:47 #13703 MakarFX:この機能は、自由証拠金と指定されたリスクとの関係でロットを計算します!何の掛け算の話ですか? 利益が出るたびにロットが増えていく!? Tretyakov Rostyslav 2021.01.30 10:52 #13704 Сергей Дыбленко:利益を出すたびにロットを増やしていくことについて この機能は、利益が出た後にロットを増加させますが、利益が最小ロット増分による増加を可能にする場合 削除済み 2021.01.30 10:54 #13705 Сергей Дыбленко:利益を出すたびにロットを増やしていくことについて 以下は、10,000までの例で、10,000から20,000まで0.5ロットでロットされます。 20 000から40 000まで、ロット1.0、40 000以上、ロット2.0付き //+------------------------------------------------------------------+ //| Moving Average.mq4 | //| Copyright 2005-2014, MetaQuotes Software Corp. | //| http://www.mql4.com | //+------------------------------------------------------------------+ #property copyright "2005-2014, MetaQuotes Software Corp." #property link "http://www.mql4.com" #property description "Moving Average sample expert advisor" #define MAGICMA 20131111 //--- Inputs input double InpLots =0.1; input int MovingPeriod =12; input int MovingShift =6; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //--- for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //--- return orders volume if(buys>0) return(buys); else return(-sells); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double Lots=InpLots; double ab=AccountBalance(); if(ab>=10000 && ab<20000) Lots=0.5; if(ab>=20000 && ab<40000) Lots=1.0; if(ab>=40000) Lots=2.0; return(Lots); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { double ma; int res; //--- go trading only for first tiks of new bar if(Volume[0]>1) return; //--- get Moving Average ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //--- sell conditions if(Open[1]>ma && Close[1]<ma) { res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); return; } //--- buy conditions if(Open[1]<ma && Close[1]>ma) { res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue); return; } //--- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double ma; //--- go trading only for first tiks of new bar if(Volume[0]>1) return; //--- get Moving Average ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //--- for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //--- check order type if(OrderType()==OP_BUY) { if(Open[1]>ma && Close[1]<ma) { if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White)) Print("OrderClose error ",GetLastError()); } break; } if(OrderType()==OP_SELL) { if(Open[1]<ma && Close[1]>ma) { if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White)) Print("OrderClose error ",GetLastError()); } break; } } //--- } //+------------------------------------------------------------------+ //| OnTick function | //+------------------------------------------------------------------+ void OnTick() { //--- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //--- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //--- } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.01.30 11:05 #13706 SanAlex:以下は、10,000までの例で、10,000から20,000まで0.5ロットでロットされます。20 000から40 000まで、ロット1.0、40 000以上、ロット2.0付き これは固定ロットの増分値です。 を超える利益があれば、私の場合は MarketInfo(Symbol(), MODE_MARGINREQUIRED)*MarketInfo(Symbol(), MODE_LOTSTEP) ロットを増やすことができます。 が、他に証拠金を使用する未決済注文がない場合。 削除済み 2021.01.30 11:13 #13707 MakarFX:は、ロットの増加が確定している。私の場合、利益が以上であればとなると、ロットが増えることになります。が、他に証拠金を使用する未決済注文がない場合。 不正をしていた - ポジションが赤字の場合、ロットを増やすことになる //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double OptimizedBuy(void) { double PROFIT_BUY=0.00; for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of open positions { if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol()) { if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) { PROFIT_BUY=PROFIT_BUY+NormalizeDouble(OrderProfit(),2); } } } double Lots=InpLots; double ab=PROFIT_BUY; if(ab<-1 && ab>=-InpLots_01) Lots=InpLots1; if(ab<-InpLots_01 && ab>=-InpLots_02) Lots=InpLots2; if(ab<-InpLots_02 && ab>=-InpLots_03) Lots=InpLots3; if(ab<-InpLots_03) Lots=InpLots4; //--- return trading volume return(Lots); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double OptimizedSell(void) { double PROFIT_SELL=0.00; for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of open positions { if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol()) { if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) { PROFIT_SELL=PROFIT_SELL+NormalizeDouble(OrderProfit(),2); } } } double Lots=InpLots; double ab=PROFIT_SELL; if(ab<-1 && ab>=-InpLots_01) Lots=InpLots1; if(ab<-InpLots_01 && ab>=-InpLots_02) Lots=InpLots2; if(ab<-InpLots_02 && ab>=-InpLots_03) Lots=InpLots3; if(ab<-InpLots_03) Lots=InpLots4; //--- return trading volume return(Lots); } //+------------------------------------------------------------------+ Сергей Дыбленко 2021.01.30 11:32 #13708 しかし、私の足りない頭脳では、必要なことをするのは無理でした。 Tretyakov Rostyslav 2021.01.30 11:39 #13709 Сергей Дыбленко: しかし、私の頭脳ではどうすることもできないのです。 何が必要なのか、ポイントを絞って説明していますね。 作業中の注文数、同時に取引するペアの数、取引ごとのリスクはどれくらいか(ある場合)。 そして、あなたからの何か) Tretyakov Rostyslav 2021.01.30 11:42 #13710 SanAlex:今までズルをしていた-ポジションが赤字になるとロットが増えてしまう サーシャが少し手を加えて、オッズでロットを増やしました input double factor=1.05; // коофициент умножения //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double OptimizedSell(void) { double Lots =0.00; double PROFIT_BUY =0.00; double LOT_BUY =0.00; double PROFIT_SELL=0.00; double LOT_SELL =0.00; for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of open positions { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true) { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { PROFIT_BUY=PROFIT_BUY+NormalizeDouble(OrderProfit(),2); LOT_BUY =LOT_BUY+NormalizeDouble(OrderLots(),2); } if(OrderType()==OP_SELL) { PROFIT_SELL=PROFIT_SELL+NormalizeDouble(OrderProfit(),2); LOT_SELL =LOT_SELL+NormalizeDouble(OrderLots(),2); } } } } if(PROFIT_BUY<0) Lots=LOT_BUY*factor; else Lots=LOT_BUY; if(PROFIT_SELL<0) Lots=LOT_SELL*factor; else Lots=LOT_SELL; //--- return trading volume return(Lots); } //+------------------------------------------------------------------+ 1...136413651366136713681369137013711372137313741375137613771378...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
EAの最下部へ。
残念ながら増殖しません!!!((
残念ながら増殖しません!!!((
この機能は、自由証拠金と指定されたリスクとの関係でロットを計算します!
何の掛け算の話ですか?
この機能は、自由証拠金と指定されたリスクとの関係でロットを計算します!
何の掛け算の話ですか?
利益が出るたびにロットが増えていく!?
利益を出すたびにロットを増やしていくことについて
この機能は、利益が出た後にロットを増加させますが、利益が最小ロット増分による増加を可能にする場合
利益を出すたびにロットを増やしていくことについて
以下は、10,000までの例で、10,000から20,000まで0.5ロットでロットされます。
20 000から40 000まで、ロット1.0、40 000以上、ロット2.0付き
以下は、10,000までの例で、10,000から20,000まで0.5ロットでロットされます。
20 000から40 000まで、ロット1.0、40 000以上、ロット2.0付き
これは固定ロットの増分値です。
を超える利益があれば、私の場合は
ロットを増やすことができます。
が、他に証拠金を使用する未決済注文がない場合。
は、ロットの増加が確定している。
私の場合、利益が以上であれば
となると、ロットが増えることになります。
が、他に証拠金を使用する未決済注文がない場合。
不正をしていた - ポジションが赤字の場合、ロットを増やすことになる
しかし、私の頭脳ではどうすることもできないのです。
何が必要なのか、ポイントを絞って説明していますね。
作業中の注文数、同時に取引するペアの数、取引ごとのリスクはどれくらいか(ある場合)。
そして、あなたからの何か)
今までズルをしていた-ポジションが赤字になるとロットが増えてしまう
サーシャが少し手を加えて、オッズでロットを増やしました