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

 
Nauris Zukas:

ありがとうございます。でも、そうすると、(私の理解が正しければ)データのスケーリングも必要になってきますね。データをスケーリングすることが唯一の解決策だと思われます。

なぜ、何でもかんでもスケールするのか?2つのバッファを使い、一方に正の値、もう一方に負の値を入れるだけです。計算で正の値しか出ない場合は、-1 をかければよい。しかし、もし計算でプラスとマイナスの両方の値が出るのであれば、私の提案はあてはまりません。

そうすれば、さまざまな幅のヒストグラムを作ることができます。まず、広いヒストグラムで表示されているバッファに値を入れ、次に薄いヒストグラムで表示されているバッファに値を入れていきます。

これにより、ヒストグラムが作成されます。ここでは4つのバッファが使用されています。


 
Alexey Viktorov:

なぜ、何でもかんでもスケールするのか?2つのバッファを使い、一方に正の値、もう一方に負の値を入れるだけです。計算で正の値しか出ない場合は、-1 をかければよい。しかし、もし計算でプラスとマイナスの両方の値が出るのであれば、私の提案はあてはまりません。

そして、異なる幅のヒストグラムを作ることができます。まず、ワイドヒストグラムに表示されるバッファを値で満たし、次にシンヒストグラムに表示されるバッファを値で満たすようにします。

これにより、ヒストグラムが作成されます。ここでは4つのバッファが使用されています。


ありがとうございます。しかし、線付きのバッファは例えば 1.19653 から 1.19674 の範囲になり、ヒストグラムは 0 から 250 になるので、この変種には合いません。チックと1つのウィンドウで広がる、だからこそ、2つ目のY軸を作りたかった。

 
Nauris Zukas:

ありがとうございます、でもうまくいきません、なぜならラインのあるバッファは例えば1.19653から1.19674の範囲になり、ヒストグラムは0から250の範囲になります。チックと1つのウィンドウで広がる、だからこそ、2つ目のY軸を作りたかった。

そうですね、収まりませんね。しかし!!!スケーリングはどうなるのでしょうか?ヒストグラムの値を100で割るとか?あるいは0.01倍して...。

 
Alexey Viktorov:

そうですね、収まりませんね。しかし!!!スケーリングはどうするのでしょうか?ヒストグラムの値を100で割ってみるとどうでしょう。あるいは0.01倍して...。

これまでのコンセプトは、リニアバッファから最大/最小値を取り出し、その値で最大のスプレッドを作り、他のスプレッドは最大値でスケーリングする、というものでした。

 
Artyom Trishkin:

つまり、すべてが有効で、EAがポジションを開いたり注文を出したりしないので、ブローカーはあなたの口座で自動売買を許可していないのです。

EA がサーバーに取引要求を 送信しようとしたときのログはどのように表示されますか?

注文は出ているが、IsTradeAllowed()が0である。どうしてでしょう?

 
Andrei:

自動売買を可能にするということですか?これも有効です...

ブローカーのヘルプデスクに電話することは意味があるのだろうか

 
Andrei:

注文が発注されたが、IsTradeAllowed()が0である。なぜ、そんなことが可能なのか?


アカウントに競争力があるか?

確認するパラメータは少なくとも4つあります。

ACCOUNT_TRADE_EXPERT
ACCOUNT_TRADE_ALLOWED
TERMINAL_TRADE_ALLOWED
IsTradeAllowed(_Symbol,TimeCurrent())
 

選択した取引商品の現在のティックと以前のティックを比較するコードの書き方を教えてください。

私は比較する必要があります:もしTick(現在)> Tick(前)は、そのようなティックのカウントの実行に移動し、逆に、もしTick(現在)< Tick(前)は、ticks2の計算に移動します。

したがって、選択したチャートと時間枠で、各バーで何ティックが価格を上昇させ、何ティックが価格を下降させるかを計算したいのです。

アドバイスお願いします人生初のトレーニングインジケーター、そして人生初のプログラムを書いています :(

正解だったでしょうか?

int Tick;

int Tick2;

int start()

if((Bid - Bid[1]) > 0)

{

ダニ++。

を返します。

}

さもなくば

{

Tick2++です。

を返します。

}

 
YarTrade:

選択した取引商品の現在のティックと以前のティックを比較するコードの書き方を教えてください。

私は比較する必要があります:もしTick(現在)> Tick(前)は、そのようなティックのカウントの実行に移動し、逆に、もしTick(現在)< Tick(前)は、ticks2の計算に移動します。

したがって、選択したチャートと時間枠で、各バーで何ティックが価格を上昇させ、何ティックが価格を下降させるかを計算したいのです。

アドバイスお願いします人生初のトレーニングインジケーター、そして人生初のプログラムを書いています :(

ちゃんと作れているかな?

各ティックに Date、Time、Bid、計算結果を書き込んでみて ください。そして、それをExcelにアップロードして確認します。プログラムの数十行ごとに照合するのは、ほとんど意味がないのです

しかし、見てください、条件演算子の各分岐にはreturnがあります、つまり、常に実行されています。そこで、条件演算子から取り出すのです。

int Tick=0, Tick2=0;       // Для вставки программы используйте кнопку SRC
double Bid1;

void OnInit()
{
  Bid1=Bid;
}

void start()   // Вместо start более модно писать OnTick
{
    if(Bid > Bid1) Tick++;                             
    else           Tick2++;
    Bid1=Bid;                          
}

Bid[1]・・・という感じでしょうか?

 
STARIJ:
// Вместо start более модно писать OnTick

:)