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

 
Eugen8519:

この機能を作りました、ありがとうございました。


どういたしまして)
 
Mihail Matkovskij:

統計に基づくストップ&テイクをどう計算するかによりますが...。ローソク足による統計」とは何か、どのように計算するのか、あまり明確ではありません。

その答えは、まるでガンの笛のようで、不思議なことにいつも私の疑問に答えてくれるのです。

 
darirunu1:

ザリガニの口笛のように、不思議といつも答えが返ってくるのです。

わからないところにどうやって答えるんだ......?:)

ストップとテイクの計算方法を理解するために、あなたのケースでは、ローソク足で統計情報を計算する方法を知る必要があるのでしょうか?ローソク足」は非常に幅の広い言葉 ですから...。

また、どのようなストップ&テイクの比率がいいのか......?ここでは、課題もわからないあなたのために、トレーディングシステムを考える必要があるのです......。
 
Mihail Matkovskij:

何のことかはっきりしない質問に、どうやって答えるのか......?:)

ストップ&テイクの計算方法を理解するために、あなたの場合、あなたはローソク足の統計情報を計算する方法を知っておく必要があります?ローソク足」は非常に柔軟な言葉 なので...。

また、ストップ&テイクの比率はどのくらいがいいのでしょうか...?ここでは、課題もわからないあなたのために、トレーディングシステムを考える必要があるのです......。

int cnt,ticket,total=0;

st = "一般営業時間 月-金 水-金 木-金\n";

double cHeight, gHeight, max;

int sat, sun, mon, thu, wen, ths, fri; //, NN;

int H = TimeHour(TimeCurrent()); // 現在の時刻を決定する。

double NN = H + N*24; // オフセットを定義する。

if (NN>Bars) NN=Bars;

for (int t=0; t<24; t++)

{

int HeightZ = 0; int z=0;

for (int i=0; i<=NNN; i++)

{

HeightZ =MathAbs(High[i]-Low[i])/Point ;

z++;

}

どのような選択肢があるのでしょうか?
 
darirunu1:

どのような選択肢があるのでしょうか?
int cnt,ticket,total=0;

st = "часы общ. пон. вт. ср. чт. пт. \n";

double cHeight, gHeight, Max;

int sat, sun, mon, thu, wen, ths, fri; //, NN;

int H = TimeHour(TimeCurrent()); // определим текущий час

double NN = H + N*24; // определим смещение

if (NN>Bars) NN=Bars;

for (int t=0; t<24; t++)

{

  int HeightZ = 0; int z=0;

  for (int i=0; i<=NN; i++)

  {

    HeightZ = (High[i]-Low[i])/Point;

    z++;
  }

}

私が理解する限り、あなたのモーションはバーの高さとして計算されます(MathAbsは 必要ありませんでした)。

и

double NN = H + N*24;

ここでは、バーの本数を計算しようとしています...しかし、ひとまずは単なる正の数として設定するのがベターでしょう。

このように平均的なバーの動きを計算することが できます。

double avBarMove(int _period) {
  double cmMove = 0;
  for (int i = 0; i < _period; i++)
    cmMove += High[i]-Low[i];
  return cmMove / _period;
} 

ここで、関数の結果をもとに、ストップとテイクの計算をしてみましょう。

 



機能を正しく配置するために

SendNotification ("текст");




ここにポジションエントリーメッセージとして挿入します。

void OPENORDER(string ord)

  {
  
  double priceL=m_symbol.Ask();
   if(ord=="Sell")      
    SendNotification ("текст");

        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")
    SendNotification ("текст");
 //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }

そして、すでにスマートフォンで通知を受けることに成功しています。




しかし、どこにどのように挿入するのか

SendNotification

ストップロスやテイクプロフィットに 到達したときにメッセージを受け取るには?

 
Eugen8519:


機能を正しく配置するための支援


ここにポジションエントリーメッセージとして挿入します。

そして、すでにスマートフォンで通知を受けることに成功しています。


しかし、どこにどのように挿入するのか

ストップロスやテイクプロフィットに 到達したときにメッセージを受け取るには?

OnTradeTransactionを参照してください。

 

Eugen8519:

しかし、どこにどのように挿入するのか

ストップロスやテイクプロフィットに 到達したときにメッセージを送るには?

まず、注文の終了を制御するための関数を作成する必要があります。

 
MakarFX:

まず、注文の終了を制御するための関数を作成する必要があります。

OnTradeTransactionは、サーバー上の任意のストップオーダーがトリガーされたときにトリガーされます。

 
MakarFX:

まず、注文の終了を制御するための関数を作成する必要があります。

スルーはどうですか?

DEAL_REASON_SL
DEAL_REASON_TP