MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1584

 
Valeriy Yastremskiy:

モジュールの違い。モジュール無しでは、トップゾーンのみ条件に該当します。オープンプライス-ビッド|>10*_ポイントオープニング条件

このように、BidがOpenPriceより 低く、Moduleが ない状態であることが望ましい。

そうでなければ、ビッドがOpenPriceより 高い場合、正しい結果が得られます。

 
Valeriy Yastremskiy:

モジュールの違い。モジュール無しでは、トップゾーンのみが条件に該当します。オープンプライス - ビッド|>10*_ポイントオープニング条件

よくわからないんだけど...。

もっとわかりやすくしてくれないかな...初心者のために)

 
MakarFX:

驚かせてくれますね。


何を使って?
 
Alexey Viktorov:
どうやって?
Alexey Viktorov:

画像から、OpenPrice - Bidは10*_Point以上であってはならないことが分かります。

が、マイナスを含めて少なくなることがあります。

 
MakarFX:

が、マイナスを含めて少なくなることがあります。

そう...そして、"&& > 0 "で条件を取得します。

質問は何ですか?そのままか、何かのためにか?

 
Alexey Viktorov:

そう...そして、"&& > 0 "で条件を取得します。

質問は何ですか?そのままか、何かのためにか?

私は現在、この定義で市場に参入して います

if(Bid < OpenPrice && Bid > OpenPrice-Х*Point)
if(Ask > OpenPrice && Ask < OpenPrice+Х*Point)

簡略化する方法があるのではと思い)

 

martinのためにコードの一部を最適化するのを助ける

課題はこれだ。

-停止後、マーティンがロットに乗ります。

-乗算回数は関数OrdersCloseで調整でき、指定した値に達するとロットは開始時のものにリセットされます。

- ロットボリュームはリセットせず、逆順に順次減少させなければならない。

例えば、OrdersClose=5, Martin=2, lot=0.01のような場合です。

0.01; 0.02; 0.04; 0.08; 0.16 (リセット) 0.01; 0.01;,,,, という順序になります。

need:0.01; 0.02; 0.04; 0.08; 0.16 (リセット) 0.16; 0.08; 0.04;...です。0,01.

自分で解決できるほどの知識はない。

いろいろな組み合わせを試したが、思うような効果が得られない。

double LOT()
{
   int n=0;
   double OL=dLots;
   for (int j = OrdersHistoryTotal()-1; j >= 0; j--)
   {
      if (OrderSelect(j, SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == iMagic)
         {
            if (OrderProfit()<0) 
            {
               if (n==0) OL=NormalizeDouble(OrderLots()*K_Martin,DigitsLot);
               n++;
               if (n>=OrdersClose) {Comment("1");return(dLots);}
            }
            else
            {
               if (n==0) {Comment("2");return(dLots);}
               else {Comment("3");return(OL);}
            }
         }
      }
   }
   return(OL);
}
 
MakarFX:

私は現在、このマーケットエントリーポイントの 定義を使っています。

簡略化する方法があるのではと思い)

if(Bid < OpenPrice && Bid > OpenPrice-Х*Point)
if(Ask > OpenPrice && Ask < OpenPrice+Х*Point) // цену в середину диапазона ставим

OpenPriceS=OpenPrice-X*Point/2;
if(fabs(Bid-OpenPriceS)>Х*Point){ ....   }

そして、Alexeyはそれを正しく理解している))

Alexey Viktorov:

条件によってこうなるはず、Bid belowOpenPriceとNo modules

そうでなければ、BidがOpenPriceより 高い場合、正しい結果が得られます。

固定)

はい、正解です。状態は変化しなかった。癖で。Bidが真ん中にあるのは写真ではわかりにくいですね)))

しかし、2つ目の条件である、エントリー数は同じです。

 
законопослушный гражданин:

martinのためにコードの一部を最適化するのを助ける

課題はこれだ。

-停止後、マーティンがロットに乗ります。

-乗算回数は関数OrdersCloseで調整でき、指定した値に達するとロットは開始時のものにリセットされます。

- ロットボリュームはリセットせず、逆順に順次減少させなければならない。

例えば、OrdersClose=5, Martin=2, lot=0.01のような場合です。

0.01; 0.02; 0.04; 0.08; 0.16 (リセット) 0.01; 0.01;,,,, という順序になります。

need:0.01; 0.02; 0.04; 0.08; 0.16 (リセット) 0.16; 0.08; 0.04;...です。0,01.

自分で解決できるほどの知識はない。

いろいろな組み合わせを試したが、思うような効果が得られない。

//+------------------------------------------------------------------+
//| Расчет лота                                                      |
//+------------------------------------------------------------------+
double Lots()
  {
   double L=0;
   // если последняя закрытая сделка убыточная и лот равен стартовому
   // включаем Мартин
   if(GetInfoLastPos(2)<0&&GetInfoLastPos(1)==Lot) 
     {
      Martin=true;
     }
   // если последняя закрытая сделка убыточная и лот больше или равен максимальному
   // выключаем Мартин
   if(GetInfoLastPos(2)<0&&GetInfoLastPos(1)>=MaxMartinLot)
     {
      Martin=false;
     }
   // если последняя закрытая сделка убыточная и Мартин включен, умножаем лот
   if(Martin==true)
     {
      L=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);
     }
   // если последняя закрытая сделка убыточная и Мартин выключен, делим лот
   if(Martin==false)
     {
      L=NormalizeDouble(GetInfoLastPos(1)/K_Martin,DigitsLot);
     }

   if(L>MAXLOT) L = MAXLOT;
   if(L<MINLOT) L = MINLOT;
   return(L);
  }
//+----------------------------------------------------------------------------+
//|  Функция возвращает по символу и магику                                    |
//|  1 - размер лота последней закрытой позиции                                |
//|  2 - размер профита с учетом комиссии и свопа последней закрытой позиции   |
//|  3 - время последней закрытой позиции                                      |
//+----------------------------------------------------------------------------+
double GetInfoLastPos(int a=1)
  {
   datetime t=0;
   double result=0,l=0,p=0,f=0;
   int i=OrdersHistoryTotal();
   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
              }
           }
        }
     }
   if(a==1) {result=l;} else
   if(a==2) {result=p;} else
   if(a==3) {result=(double)t;}
   else     {result=0;}
   return(result);
  }
 
Valeriy Yastremskiy:

そして、Alexeiはそれを正しく理解している))

はい、その通りです。コンディションは変わらなかった。癖で。Bidが真ん中にあるのが写真ではわかりにくいですね)))

ありがとうございました。)