MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1618 1...161116121613161416151616161716181619162016211622162316241625...1953 新しいコメント Galim_V 2021.09.18 19:13 #16171 Vitaly Muzichenko #:ライブラリを使わず、この方法でできます ありがとうございました。 Artyom Trishkin 2021.09.18 20:10 #16172 MakarFX #: マーケットが終了したため、TimeCurrent()は変更されません。クリプトで確認すると、週末に動作している なぜダニに依存させるのか?ボタンはそれらに依存してはいけないのです。 Dima DD 2021.09.19 07:02 #16173 こんにちは。 2ヶ月以上、誰も持っていないストラテジーをテストしたい。 容量が大きいので、ブローカーがダウンロードを許可しないのは理解できます。基本ペアのみ。 もしかしたら、サーバーのフォルダーに残っている人がいるかもしれませんね。少なくとも1年間は。 Dima DD 2021.09.19 11:02 #16174 この問題は解決されました。 Sinax 2021.09.19 13:28 #16175 こんにちは! ここに書き込むことを決めた...多分誰かが応答します! CodeBaseで...ずっと前にそれがあった...インジケータをレイアウトしました...どちらも名前は覚えていない...また、作者。それの本質はこれだった...手動で水平線を設定...そしてそれは価格が1つおよび他の方向にラインを横断した何回を示しています...とこの価格での統計を示した... Perelapatil 2回66ページが見つからなかった...誰もが覚えているか誰も持つことができます!!!...。PLEASEはとても必要です!!! Sergey Gridnev 2021.09.19 13:33 #16176 Sinax #: こんにちは! ここに書き込むことを決めた...多分誰かが応答します! CodeBaseで...ずっと前にそれがあった...インジケータをレイアウトしました...どちらも名前は覚えていない...また、作者。それの本質はこれだった...手動で水平線を設定...そしてそれは価格が1つおよび他の方向でラインを横断した何回を示しています...そしてこの価格の統計を示す...二度66ページをパイプがそれを見つけることができませんでした...誰もが覚えているか、いずれかを持つことができます!!!!。PLEASE needs it badly !!!! これじゃない。https://www.mql5.com/ru/code/1428? Sinax 2021.09.19 13:56 #16177 Sergey Gridnev #: それじゃなくて https://www.mql5.com/ru/code/1428? いいえ、そうではありません...MT4用のものがそうでした...ありがとうございます))) EVGENII SHELIPOV 2021.09.19 16:28 #16178 皆さん、ごきげんよう!!!! あなたは私がグリッドEAのコードを書くのを助けることができる、グリッドを閉じるの原則は、損益分岐価格からプラス利益とすべての注文に利益を持つ単純なすべての注文です。 あるドローダウンレベルでグリッドのminとmaxの注文だけを平均化して決済し、ドローダウンレベルを下げるというアイデアを実現しようとしています。 以下は、グループ注文を開くためのコードの一部です。 if (CountTrade() < MaxOrders) { int order_type = FindLastOrderType(); if (order_type == OP_BUY) { price = FindLastOrderPrice(OP_BUY)。 if(Ask<= 価格 - (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point)) { lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2)です。 ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue)です。 if (チケット < 1) プリント(「買い注文エラー」)。 ModifyOrders(OP_BUY)を使用します。 } } if (order_type == OP_SELL) { price = FindLastOrderPrice(OP_SELL)。 if(Bid>= price + (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))。 { lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2)です。 ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red)です。 if (チケット < 1) プリント(「売り注文エラー!」)。 ModifyOrders(OP_SELL)です。 } } } 注文を修正するコマンドが出てくる部分です。 ここでは、注文の修正を「利益のある全注文と損失のある全注文」と「最小と最大の注文の平均化」で掛け合わせて います。 //+----------------------------------------------------------------------------+ //| 注文の変更 //+----------------------------------------------------------------------------+ void ModifyOrders(int otype) { 二重 BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0, SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0; イント BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0; 二重 op = 0, lt = 0, order_lots = 0; イント tk = 0, b = 0, s = 0。 価格 = 0;tp = 0; for(int i = OrdersTotal() - 1; i >= 0; i--) if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) if(OrderMagicNumber() == Magic) if(OrderSymbol() == Symbol() && OrderType() == otype) { op = NormalizeDouble(OrderOpenPrice()、Digits()) lt = NormalizeDouble(OrderLots(), 2); tk = OrderTicket(); if(otype == OP_BUY) { b++; if(op > BuyPriceMax || BuyPriceMax == 0) { BuyPriceMax = op; BuyPriceMaxLot = lt; BuyPriceMaxTic = tk; } if(op < BuyPriceMin || BuyPriceMin == 0) { BuyPriceMin = op; BuyPriceMinLot = lt; BuyPriceMinTic = tk; } } if(otype == OP_SELL) { s++; if(op > SelPriceMax || SelPriceMax == 0) { SelPriceMax = op; SelPriceMaxLot = lt; SelPriceMaxTic = tk; } if(op < SelPriceMin || SelPriceMin == 0) { SelPriceMin = op; SelPriceMinLot = lt; SelPriceMinTic = tk; } } if (otype == OP_BUY || otype == OP_SELL) { price += OrderOpenPrice() * OrderLots(); order_lots += OrderLots(); } } //*************************************************************// double AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0; if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder) 購入価格(AwerageBuyPrice) = NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot))) (BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits()); if(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder) AWARAGESELPRICE = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/) (SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits()); if (Drawdown < DrawdownClosingMinMaxOrder) avg_price = NormalizeDouble(price / order_lots, Digits); //*************************************************************// for(int i = OrdersTotal() - 1; i >= 0; i--) if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) if(OrderMagicNumber() == Magic) if(OrderSymbol() == Symbol()) { op = NormalizeDouble(OrderOpenPrice()、Digits()) tp = NormalizeDouble(OrderTakeProfit()、Digits()) lt = NormalizeDouble(OrderLots(), 2); tk = OrderTicket(); if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder) { if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic) if(Bid < AwerageBuyPrice && tp != AwerageBuyPrice) if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed)) Print("OrderModifyエラー#", GetLastError()); if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0) if(!OrderModify(tk, op, 0, 0, 0, clrRed)) Print("OrderModifyエラー#", GetLastError()) } if(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder) { if(tk == SelPriceMaxTic || tk == SelPriceMinTic) if(Ask > AwerageSelPrice && tp != AwerageSelPrice) if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed)) Print("OrderModifyエラー#", GetLastError()); if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0) if(!OrderModify(tk, op, 0, 0, 0, clrRed)) Print("OrderModifyエラー#", GetLastError()) } if (Drawdown < DrawdownClosingMinMaxOrder) if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits); if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits); { if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0)) Print("Orders modified successfully!"); else Print("Order modification error!"); } } } その結果、許容ドローダウンレベルまでのグループオーダーの修正は通常通り行われ、許容ドローダウンレベル以降は平均化され、予想通りminとmaxがクローズ されることになります。 しかし、ドローダウンが減少したとき、新しいTakeProfitは設定されたくないのです。 以下は、エラーコードを含むログです。 このエラーでどうしたらいいかわからない方、ご安心ください!修正するお手伝いをさせていただきます。 Any questions from newcomers エラー、バグ、質問 初心者の方からの質問 MQL5 MT5 MetaTrader Tretyakov Rostyslav 2021.09.19 17:21 #16179 EVGENII SHELIPOV #:皆さん、ごきげんよう!!!! 使用方法 EVGENII SHELIPOV 2021.09.19 17:41 #16180 MakarFX #:使用方法 もう少し具体的に教えてください。 1...161116121613161416151616161716181619162016211622162316241625...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ライブラリを使わず、この方法でできます
ありがとうございました。
マーケットが終了したため、TimeCurrent()は変更されません。クリプトで確認すると、週末に動作している
なぜダニに依存させるのか?ボタンはそれらに依存してはいけないのです。
こんにちは。
2ヶ月以上、誰も持っていないストラテジーをテストしたい。
容量が大きいので、ブローカーがダウンロードを許可しないのは理解できます。基本ペアのみ。
もしかしたら、サーバーのフォルダーに残っている人がいるかもしれませんね。少なくとも1年間は。
こんにちは! ここに書き込むことを決めた...多分誰かが応答します! CodeBaseで...ずっと前にそれがあった...インジケータをレイアウトしました...どちらも名前は覚えていない...また、作者。それの本質はこれだった...手動で水平線を設定...そしてそれは価格が1つおよび他の方向でラインを横断した何回を示しています...そしてこの価格の統計を示す...二度66ページをパイプがそれを見つけることができませんでした...誰もが覚えているか、いずれかを持つことができます!!!!。PLEASE needs it badly !!!!
それじゃなくて
いいえ、そうではありません...MT4用のものがそうでした...ありがとうございます)))
皆さん、ごきげんよう!!!!
あなたは私がグリッドEAのコードを書くのを助けることができる、グリッドを閉じるの原則は、損益分岐価格からプラス利益とすべての注文に利益を持つ単純なすべての注文です。
あるドローダウンレベルでグリッドのminとmaxの注文だけを平均化して決済し、ドローダウンレベルを下げるというアイデアを実現しようとしています。
以下は、グループ注文を開くためのコードの一部です。
if (CountTrade() < MaxOrders)
{
int order_type = FindLastOrderType();
if (order_type == OP_BUY)
{
price = FindLastOrderPrice(OP_BUY)。
if(Ask<= 価格 - (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))
{
lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2)です。
ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue)です。
if (チケット < 1)
プリント(「買い注文エラー」)。
ModifyOrders(OP_BUY)を使用します。
}
}
if (order_type == OP_SELL)
{
price = FindLastOrderPrice(OP_SELL)。
if(Bid>= price + (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))。
{
lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2)です。
ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red)です。
if (チケット < 1)
プリント(「売り注文エラー!」)。
ModifyOrders(OP_SELL)です。
}
}
}
注文を修正するコマンドが出てくる部分です。 ここでは、注文の修正を「利益のある全注文と損失のある全注文」と「最小と最大の注文の平均化」で掛け合わせて います。
//+----------------------------------------------------------------------------+
//| 注文の変更
//+----------------------------------------------------------------------------+
void ModifyOrders(int otype)
{
二重
BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0,
SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0;
イント
BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0;
二重
op = 0, lt = 0, order_lots = 0;
イント
tk = 0, b = 0, s = 0。
価格 = 0;tp = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderMagicNumber() == Magic)
if(OrderSymbol() == Symbol() && OrderType() == otype)
{
op = NormalizeDouble(OrderOpenPrice()、Digits())
lt = NormalizeDouble(OrderLots(), 2);
tk = OrderTicket();
if(otype == OP_BUY)
{
b++;
if(op > BuyPriceMax || BuyPriceMax == 0)
{
BuyPriceMax = op;
BuyPriceMaxLot = lt;
BuyPriceMaxTic = tk;
}
if(op < BuyPriceMin || BuyPriceMin == 0)
{
BuyPriceMin = op;
BuyPriceMinLot = lt;
BuyPriceMinTic = tk;
}
}
if(otype == OP_SELL)
{
s++;
if(op > SelPriceMax || SelPriceMax == 0)
{
SelPriceMax = op;
SelPriceMaxLot = lt;
SelPriceMaxTic = tk;
}
if(op < SelPriceMin || SelPriceMin == 0)
{
SelPriceMin = op;
SelPriceMinLot = lt;
SelPriceMinTic = tk;
}
}
if (otype == OP_BUY || otype == OP_SELL)
{
price += OrderOpenPrice() * OrderLots();
order_lots += OrderLots();
}
}
//*************************************************************//
double AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0;
if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
購入価格(AwerageBuyPrice) = NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)))
(BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits());
if(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
AWARAGESELPRICE = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/)
(SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits());
if (Drawdown < DrawdownClosingMinMaxOrder)
avg_price = NormalizeDouble(price / order_lots, Digits);
//*************************************************************//
for(int i = OrdersTotal() - 1; i >= 0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderMagicNumber() == Magic)
if(OrderSymbol() == Symbol())
{
op = NormalizeDouble(OrderOpenPrice()、Digits())
tp = NormalizeDouble(OrderTakeProfit()、Digits())
lt = NormalizeDouble(OrderLots(), 2);
tk = OrderTicket();
if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
{
if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)
if(Bid < AwerageBuyPrice && tp != AwerageBuyPrice)
if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))
Print("OrderModifyエラー#", GetLastError());
if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)
if(!OrderModify(tk, op, 0, 0, 0, clrRed))
Print("OrderModifyエラー#", GetLastError())
}
if(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
{
if(tk == SelPriceMaxTic || tk == SelPriceMinTic)
if(Ask > AwerageSelPrice && tp != AwerageSelPrice)
if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))
Print("OrderModifyエラー#", GetLastError());
if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)
if(!OrderModify(tk, op, 0, 0, 0, clrRed))
Print("OrderModifyエラー#", GetLastError())
}
if (Drawdown < DrawdownClosingMinMaxOrder)
if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);
if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits);
{
if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))
Print("Orders modified successfully!");
else Print("Order modification error!");
}
}
}
その結果、許容ドローダウンレベルまでのグループオーダーの修正は通常通り行われ、許容ドローダウンレベル以降は平均化され、予想通りminとmaxがクローズ されることになります。
しかし、ドローダウンが減少したとき、新しいTakeProfitは設定されたくないのです。
以下は、エラーコードを含むログです。
このエラーでどうしたらいいかわからない方、ご安心ください!修正するお手伝いをさせていただきます。
皆さん、ごきげんよう!!!!
使用方法![](https://c.mql5.com/3/366/Screenshot_1__4.png)
使用方法
もう少し具体的に教えてください。