エキスパート: Flat Channel

 

Flat Channel:

簡単な説明

Flat Channel

作者: Vladimir Karputov

 

著者は素晴らしい!良い仕事、目標を達成した - 収益性の高いフラットエキスパートアドバイザー。特にSi-12.18でテストしたところ、良い利益が出ました!このようなExpert Advisorを長い間探していました。

いくつかコメントがあります:1.描画に時間がかかりすぎる、すべてのロジックはOnTickにある、それはティックではありません、あなたは期間M1またはM5でCBarDetectorを使用することができます。私はM5で作った。2.現在の市場のボラティリティに応じて、ダイナミクスのチャネル幅を最小-最大にしたい。

 
Rashit Ibatullin:

著者は素晴らしい!良い仕事、目標を達成した - 収益性の高いフラットエキスパートアドバイザー。特にSi-12.18でテストしたところ、良い利益が出ました!このようなExpert Advisorを長い間探していました。

いくつかコメントがあります:1.描画に時間がかかりすぎる。すべてのロジックはOnTickにあり、ティックベースではない。私はM5で作った。2.2.現在の市場のボラティリティに応じて、ダイナミクスの最小-最大チャネル幅を設定したい。

ビジュアル・モードで素早くテストするには、コードのコメント出力を無効にする 必要があります:

/*   Comment("\nСоветник "+__FILE__+" весь в работе:  ",TimeControl(),
           "\nДень:  ",Dayof(STimeCurrent),
           "\nТорговый счёт:  ",m_account.Login(),
           "\nCompany:  ",m_account.Company(),
           "\nEquity:  ",m_account.Equity(),
           "\nВремя по GMT:  "+TimeToString(TimeGMT(),TIME_DATE|TIME_SECONDS),
           "\nSpread:  ",m_symbol.Spread(),
           "\nStopLevel:  ",m_symbol.StopsLevel(),
           "\nПлечо:  ",m_account.Leverage()
           );*/
//--- 新しいバーが誕生した時だけ働く。
 

このEAを実装してくださった方々に感謝します!

このEAをmoexに 適応させるために一行ずつ分解しているのですが(結局のところFX用に設計されています)、コードについて質問があります。

//--- FreezeLevel -> 保留オーダーと変更用

   double freeze_level=m_symbol.FreezeLevel()*m_symbol.Point();
   if(freeze_level==0.0)
      freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   freeze_level*=1.1;
   
   
   
   
//--- ストップ・レベル -> テイクプロフィットおよびストップ・ロス用
   double stop_level=m_symbol.StopsLevel()*m_symbol.Point();
   if(stop_level==0.0)
      stop_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   stop_level*=1.1;
   

なぜ掛け算があるのでしょうか?正確には3倍で、次に1.1倍なのでしょうか?

 
refounder83:

このEAを導入した方々に感謝する!

このEAをmoexに適応させるために一行ずつ分解しているのですが(結局のところFX用に設計されています)、コードについて質問があります。

なぜ掛け算があるのでしょうか?正確には3倍で、次に1.1倍なのでしょうか?

FXも証券取引所も知っています。しかし、moexが 一体何なのかは知らない。

 
昨日、あなた自身が ----moexのExpert Advisorという トピックを作成しました。価格は?
 
私はただ、コードのロジックを理解し、それを取引所に適応させたいだけなのです。
 
refounder83:
私はただコードのロジックを理解し、それを証券取引所に適応させたいだけです。

1.注意:誰かに返信する場合は、「返信」ボタンを使用します。

2.コードを正確に書くために、まずブローカーのテクニカル・サポートからSYMBOL_TRADE_STOPS_LEVELと SYMBOL_TRADE_FREEZE_LEVELのレベルについてすべて調べてください。 これらのレベルはすべてのシンボルでゼロなのでしょうか? ゼロ」とはどういう意味でしょうか - フローティング・レベルなのでしょうか、それとも本当にレベルがないのでしょうか。

 
Vladimir Karputov:

1- 注意:誰かに返信する場合は、「返信」ボタンを使います。

2.コードを正確に書くために、まずブローカーのテクニカル・サポートからSYMBOL_TRADE_STOPS_LEVELとSYMBOL_TRADE_FREEZE_LEVELのレベルについてすべて調べてください。 これらのレベルはすべてのシンボルでゼロなのでしょうか? ゼロ」とはどういう意味なのでしょうか - フローティング・レベルなのでしょうか、それとも本当にレベルがないのでしょうか。

ブローカーのテクニカル・サポートに、これらのレベルはブロードキャストされないと書きました。

 
refounder83:

ブローカーのテクニカル・サポートに、これらのレベルは放送されていないと書きました。

それなら無視すればいい(これらのレベルが学習される行を一時的にコメントアウトする)。

 
Vladimir Karputov:

それなら、それらを無視すればいい(それらのレベルが学習される行を一時的にコメントアウトする)。

TimeControlプロシージャに行があります。

  if(!InpTimeControl)
      return(true);

つまり、InpTimeControlの値がfalseの場合でも、TimeControlプロシージャにはtrueが返されるのでしょうか?

bool TimeControl(void)
  {
   if(!InpTimeControl)
      return(true);
      
   MqlDateTime STimeCurrent;
   datetime time_current=TimeCurrent();
   if(time_current==D'1970.01.01 00:00')
      return(false);
   TimeToStruct(time_current,STimeCurrent);
   if(InpStartHour<InpEndHour) // 日中の時間間隔
     {

      if(STimeCurrent.hour>=InpStartHour && STimeCurrent.hour<InpEndHour)
         return(true);
     }
   else if(InpStartHour>InpEndHour) // 1日単位で遷移する時間間隔
     {

      if(STimeCurrent.hour>=InpStartHour || STimeCurrent.hour<InpEndHour)
         return(true);
     }
   else
      return(false);
//---
   return(false);
  }