[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 888

 
Multy:

なるほど。

ところで、MQL4にもタイマーはあるのでしょうか、それともMQL5だけなのでしょうか?

おそらく、これらの機能だけでしょう。

https://www.mql5.com/ru/search?utm_campaign=MQL4.community

https://www.mql5.com/ru/search?utm_campaign=MQL4.community
 
kwadrad:

アクサカルへの質問

テスターが突然動かなくなり、履歴データを掻き出すことができなくなった。

どうしたらいいのでしょうか?

参考:引用文のアーカイブをダウンロードしました。


ターミナルを再起動し、ダウンロードした見積書をあらかじめ削除することで解決しました。

その後、引用アーカイブを再ダウンロード

 
Noterday:
最大可能発注量を計算する関数を教えてください。
竿を出そうか・・・。:)
下記の関数は、必要なパラメータを計算するために必要なデータをすべて備えています。手抜きで、鍵盤も叩けないし...。

必要なものを見つけて自分で改造する...。コード自体はとてもシンプルでわかりやすいので、誰もやり直しに苦労することはないでしょうが...。

// ==========================================================================
// ------------ Функция рассчёта величины лота для открытия позиции ---------
// Если лот превышает возможный для открытия позы, то он корректируется 
// ==========================================================================

double CorrectLots(double lt, double divider=4.0)        // lt = проверяемый лот, divider = на сколько разделить
{                                                        //                                 свободные средства
   double ltcorr;
   double pnt =      MarketInfo(Symbol(),MODE_POINT);
   double mspr =     MarketInfo(Symbol(),MODE_SPREAD);
   double dig =      MarketInfo(Symbol(),MODE_DIGITS);
   double MaxLot =   MarketInfo(Symbol(),MODE_MAXLOT);
   double MinLot =   MarketInfo(Symbol(),MODE_MINLOT);
   double StpLot =   MarketInfo(Symbol(),MODE_LOTSTEP);
   double OneLot =   MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble(AccountFreeMargin()/divider,dig);  // Свободные средства, разрешенные к торговле
   
   lt=MathAbs(lt);
   ltcorr=lt;                       // Зададим начальное значением ltcorr равным значению lt
   
   if (lt>=MaxLot) ltcorr=MaxLot;   // Проверим превышение допустимых ...
   if (lt<=MinLot) ltcorr=MinLot;   // ... значений лота
   
   double Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позы

   if (Money<TradeMrg)              // Если свободных средств больше, чем цена позиции - 
      {
         return(ltcorr);                                                         // ... возвращаем неизменённый лот
      }
   else if (Money>=TradeMrg)        // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         ltcorr=MathAbs(MathFloor(TradeMrg/OneLot/StpLot)*StpLot);               // ... рассчитаем допустимый лот
         double MoneyCorr=ltcorr*OneLot+mspr*pnt;                      
         Print("Func CorrectLots: лот ",lt," скорректирован до ",ltcorr,
               " Стоимость позы до корректировки = ",Money,
               " Стоимость позы после корректировки = ",MoneyCorr
               ); 
         return(ltcorr);                                                         // ... и вернём его значение
      }
   Print("Func CorrectLots: лот вернули без изменений");
   return(ltcorr);                 // Возврат изначального лота в непредусмотренных случаях с сообщением
}

一つ質問ですが...

なぜ、終戦時のヒトラーのようなトレードが必要なのか......。彼は子供たちをヒトラーユーゲントに勧誘し、いわばファウストカートリッジ1発分の肉として...。

思い当たる節がない?

もちろんIMHOですが...。

 
artmedia70:
竿を出そうか・・・。:)下記の関数は、必要なパラメータを計算するためのデータをすべて備えています。手抜きで鍵盤も叩けない...

必要なものを見つけて自分で改造する...。コード自体はとてもシンプルでわかりやすいので、誰もやり直しに苦労することはないでしょうが...。

一つ質問ですが...

なぜ、終戦時のヒトラーのようなトレードが必要なのか......。彼は子供たちをヒトラーユーゲントに勧誘し、いわばファウストカートリッジ1発分の肉として...。

思い当たる節がない?

もちろんIMHOですが...。


ありがとうございます。

最大容量で 開くのではなく、デポサイズに基づいて計算し、さらに数学的な演算を行う必要があります =)) 。

 
Noterday:

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

最大容量で開けるのではなく、さらなる数学的演算のためにデポのサイズから計算する必要があるんです =))



をBUYにしました。

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2)

売り出し中。

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2);

lot - 注文数量を保持する変数

計算結果が >0 であることを確認する必要があります。

https://www.mql5.com/ru/search

 
IgorM:


をBUYにしました。

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2)です。

売り出し中。

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2);

lot - 注文数量を表す変数

https://www.mql5.com/ru/search

...さて、イゴールさん、お急ぎですか・・・。:)

私がキーボードに指を置く間もなく、あなたはすでに返事を書いていた...。:)

 
皆さん、ありがとうございました。
 

こんにちは。

インジケーターのラインと 価格のクロスを記憶させる方法について、コードやブランチを教えてください。どこかで見たような気がするけど、見つからない。

興味があるかどうかわからないが、こういうものの方が興味がある。

int start()

  { 

 double LineX = iCustom ("EURUSD", Period_H1, "Indicator",0,0);

 double lineY = iCustom ("EURUSD", Period_H1, "Indicator",1,0);

double priceA = Ask;

double priceB = Bid;

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;

// а так же еще определить, какое пересечение последнее, а какое предпоследние 

// intersectionX = последнее пересечение и на оборот
// intersectionY = предпоследние пересечение и на оборот

// то есть я понимаю логику, а  вот связать в коде не могу.
 
//произошло intersectionX,   то intersectionFirst = intersectionX; intersectionSecond = intersectionY;

// произошло intersectionY, то intersectionFirst = intersectionY; intersectionSecond = intersectionX;


 }
 
belck:

こんにちは。

インジケーターのラインと価格のクロスを記憶させる方法について、コードやブランチを教えてください。どこかで見たような気がするけど、見つからない。

指標線が価格を越えたかどうか知りたいのですが、こちらの方が気になります。


クロスオーバーは、価格(Ask/Bid)と指標線との 差、すなわち「差」としてとらえるのが最も適切です。

if (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("Price above indicator"); else Comment("Price below indicator");

これらの値の差を比較する場合、適切な比較のために正規化する必要はない

特にご質問の件ですが、インジケーターの線が価格と交差するのは、Ask- -iCustom()の差が前回の計算でゼロ以下になった後、高くなった時、またはその逆の時です。

この瞬間をどのように計算するかは、あなた自身のビジネスです - 前のバーで、またはすべてのティック、しかし、そのような組み合わせ。

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;
この括弧内の式は0か1のどちらかになり,これは偽と真の数値表現に対応します。
 
IgorM:


というように、価格(Ask/Bid)と指標線との差、すなわちクロスを最適に考慮します。

if (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("Price above indicator"); else Comment("Price below indicator").

これらの値の差を比較する場合、適切な比較のために正規化する必要はない

特にご質問の件ですが、インジケーターの線が価格と交差するのは、Ask- -iCustom()の差が前回の計算でゼロ以下になった後、高くなった時、またはその逆の時です。

この瞬間の計算方法は、前のバーでもいいし、ティックごとでもいいし、そのような組み合わせでもいい。

この括弧内の式は0か1のどちらかになり,これは偽と真の数値表現に対応します。

つまり、私の理解が正しければ、こんなことができるのです。

bool intersectionX = FALSE,
     intersectionY = FALSE;
int start()

  { 
if  (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) == 0)  {
intersectionX = TRUE;
intersectionY = FALSE;
}
if  (iCustom ("EURUSD", Period_H1, "Indicator",1,0)-Bid == 0) {
intersectionY = TRUE;
intersectionX = FALSE;
}
}
и я потом смогу intersectionY использовать только тогда когда оно TRUE, если FALSE, то такой код (intersectionY > Ask) не сработает, правильно я понимаю!?