どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 114

 
MarkTrade:

失礼ですが、ここで何が間違いなのか説明してください。解らないんです。


for (i=0;i>5<==ошибка;i++)
 
MarkTrade:

失礼ですが、ここで何が間違いなのか説明してください。解らないんです。

文字列を分解してみよう。

for (i=0;i<5;i++)

iを0から5までとする。各反復の後、カウンタは1つずつ増加します。iが5未満になるまで反復計算を行う。すなわち、ループは動作し、0, 1, 2, 3, 4 の 5 回の繰り返しを実行します - これらは、i ループカウンタの値です。iが5になったら、ループは終了します。

お手並み拝見です。

for (i=0;i>5;i++)

iカウンターは0に初期化されていますが、ループの反復はiが5より大きい 限り行わなければなりません。また、最初は5より大きくはありません 。したがって、ループは開始されません。

 
artmedia70:

文字列を分解してみよう

iは0から5まで変化させることができます。各反復の後、カウンタは1つずつ増加します。iが5未満になるまで反復計算を行う。すなわち、ループは動作し、0, 1, 2, 3, 4 の 5 回の繰り返しを実行します - これらは、i ループカウンタの値です。iが5になったら、ループは終了します。

お手並み拝見です。

iカウンターは0に初期化されていますが、ループの反復はiが5より大きい 限り行われる必要があります。また、最初は5より大きくはありません 。したがって、ループは開始されません。



そうなんですか!?ありがとうございます! 目を白黒させてしまったようです。
 
K-o-t:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

プログラマーの皆さん、EAとインジケーターを組み合わせる方法を教えてください。

例えば、私は独自のアルゴリズムを使って取引するシンプルなボットmo_bidir.mq 4を取り、私はそれが独自のアルゴリズムを使って取引を開始したいが、3つのMAシグナル後に

例えば on signal -Three Moving Averages:

FastEMA>MediumEMA>SlowEMA (トレンド up)- bot buys

FastEMA<MediumEMA<SlowEMA (トレンド )- bot 売り

Inp_Signal_ThreeEMA_FastPeriod = 8;

Inp_Signal_ThreeEMA_MediumPeriod = 38;

Inp_Signal_ThreeEMA_SlowPeriod= 48;

Expert Advisorは5分足で取引し、インジケータは日足または4時間足でシグナルを出すようにしたいのですが、ボットの設定でタイムフレームを変更できるようにしたいのです。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

何度も申し訳ないのですが、せめてどのフォーラムのスレッドで応募すればいいのか、それとも新しいスレッドを作成した方がいいのか、教えてください。

どうしたらいいのかわからない。


やりたいことは、フィルタリングと呼ばれるものです。そこで、「フィルタ」という言葉で検索し、フィルタリングのあるEAをいくつか見て、必要なことができるかどうか確認してください。
 
artmedia70:

ちょっと混乱してきた...。:)問題です。

1.0.1ロットの空きポジションがあります。

2.TakeProfitの値は50pipsです。

3.PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE)という式で、その潜在的な利益を計算しています。

4. 計算の結果、5ドル(0.1*50*1.0)の潜在的な利益を得ることができました。

ポジションは赤字になり、ある時点でさらに1つの平均化された買いが始まりますが、0.2ロットで

1.この2つのポジションのBreakevenを計算します。機能は必要な分だけ長く使っており、今のところ不満はない。

2.完璧です。損益分岐点を計算したが...その2つのポジションのトークンを乗せると、ゼロで閉じます。なるほど、なるほど。さて、このレベルのBUに、先に計算した利益総額と同じ5ドルを得るために必要なポイント数を追加する必要があります。

3.そして、ここで脳が詰まってしまうのです。私は何をすべきか:私は$ 5を取り、これらの2つのポジションの合計ロット(0.1 + 0.2 = 0.3)で割ると、TICK_VALUEを掛けた。

5/(0.3*1.0) = 16.6666 となります。そして、これにPoint(0.00016)を掛けて、Breakeven priceに加算します。

4.完璧です。テイクはそこに転送されますが、このレベルで閉じる2つのベイザーの合計利益は5ドルに等しくないように私には思えます - それは私には少ないように思えます。これは、テストチャートからわかることです。1つのポジションを決済した場合の残高増加は、計算された総取得額レベルで複数のポジションを決済した場合よりもはるかに大きいことが明確に示されています(チャート上のこれらの場所は、その上の持分線の外観で確認できます)。グラフ


どこが間違ってるんだろう?

利益の合計を印刷できるのはわかるが変数の値ではなく、自分の計算のどこに間違いがあるのかを理解したいのです。すでにプリントしています。

( 0.3 * 16 = 4.8 ) < ( 0.3 * 16.66666 = 5 )
この差が、あなたの考えていた差かどうかはわかりませんが、16.6666の四捨五入の関係で、利益は当然予定していた5ドルより少なくなるのです。
 
artmedia70:

ちょっと自分のことで精一杯になりつつある・・・。:)問題です。

1.0.1ロットの空きポジションがあります。

2.TakeProfitの値は50pipsです。

3.PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE)という式で、その潜在的な利益を計算しています。

4. 計算の結果、5ドル(0.1*50*1.0)の潜在的な利益を得ることができました。

ポジションは赤字になり、ある時点でさらに1つの平均化された買いが始まりますが、0.2ロットで

1.この2つのポジションのBreakevenを計算します。機能は必要な分だけ長く使っており、今のところ不満はない。

2.完璧です。損益分岐点を計算したが...その2つのポジションのトークンを乗せると、ゼロで閉じます。なるほど、なるほど。さて、このレベルのBUに、先に計算した利益総額と同じ5ドルを得るために必要なポイント数を追加する必要があります。

3.そして、ここで脳が詰まってしまうのです。私は何をすべきか:私は$ 5を取り、これらの2つのポジションの合計ロット(0.1 + 0.2 = 0.3)で割ると、TICK_VALUEを掛けた。

5/(0.3*1.0) = 16.6666 となります。そして、これにPoint(0.00016)を掛けて、Breakeven priceに加算します。

4.完璧です。テイクはそこに転送されますが、このレベルで閉じる2つのベイザーの合計利益は5ドルに等しくないように私には思えます - それは私には少ないように思えます。これは、テストチャートからわかることです。1つのポジションを決済した場合の残高増加は、計算された総取得額レベルで複数のポジションを決済した場合よりもはるかに大きいことが明確に示されています(チャート上のこれらの場所は、その上の持分線の外観で確認することができます)。チャートです。


どこが間違ってるんだろう?

利益の合計を印刷できるのはわかるが変数の値ではなく、自分の計算のどこに間違いがあるのかを理解したいのです。すでにプリントしています。

なぜ、こんなに複雑にしなければならないのか理解できない。
そうすれば、もっと楽になるのではないでしょうか?

  double sumprofit=0;
  for (int i=0; i<OrdersTotal(); i++) 
      {
       if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
          {
           if ((OrderSymbol()==Symbol()) 
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
                  {
                    sumprofit+=OrderProfit()+OrderCommission()+OrderSwap();
                  }
             }
         }
      }
  if(sumprofit > 5) AllPosClose();//5 ----> суммарный профит позиций
 

とか、こんな感じで

double sumprofit;
  for (int i=0; i<OrdersTotal(); i++) 
      {
       if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
          {
           if ((OrderSymbol()==Symbol()) 
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
                  {
                    sumprofit+=OrderProfit()+OrderCommission()+OrderSwap();
                  }
             }
         }
      }
  if(sumprofit > 5) AllPosClose();//5 ----> суммарный профит позиций
  if(sumprofit < -5) Dolivka();//  определенным лотом Sell или Buy
 
私はプログラマーではないので、アドバイスをお願いします - ターミナルのどこにダウンロードしたインジケータがあるか(それを見て実行する方法)。をダウンロードしてインストールしたのですが、ターミナル自体に見当たらないのですが?
 
fox6900:
私はプログラマーではないので、アドバイスをお願いします - ターミナルのどこにダウンロードしたインジケータがあるか(それを見て実行する方法)。をダウンロードしてインストールしたのですが、ターミナル自体に見当たらないのですが?

どのようにインストールしたのですか?どのように...?もしかしたら、手がかりがあるかもしれない......。
 
AccountNumber() はDLLから読み込むことができますか、また、どのように読み込むのですか?せめて、どこを掘ればいいのかヒントをください。つまり、関数の値をDLLに渡すことなく、つまりダイナミックライブラリ自体からということです。