Pavel Nikiforov: 何が問題なのか説明してください。この関数は、すべてのオープンポジションに 目を通し、指定されたマジックナンバーを持つポジションの数を計算することになっています。実際には、同じチケットとマジックを持つ別のEAによって開かれたリストから1つを選ぶだけなので、カウントは常に=0になります。
自分でもわかったのですが、選択はPositionGetSymbolで 行う必要があります。
//+------------------------------------------------------------------+int OpenPositions()//проверка открытых позиций по Magic number
{
int count=0;
for(int z=PositionsTotal()-1; z>=0; z --) // Перебор всех позиций
{
if(PositionGetSymbol(z)!=_Symbol) // Найдена позиция с заданным символом
{
Print(__FUNCSIG__" позиция не выбрана ",GetLastError()); continue;
}
long ticket = PositionGetInteger(POSITION_TICKET);
Print(__FUNCSIG__" ТИКЕТ ", IntegerToString(ticket));
ulong myMN=PositionGetInteger(POSITION_MAGIC);
Print(__FUNCSIG__" МАГИК ", IntegerToString(myMN));
if(myMN==Magic)
count++;
}
return(count);
}
//+------------------------------------------------------------------+
何が問題なのか説明してください。この関数は、すべてのオープンポジションに 目を通し、指定されたマジックナンバーを持つポジションの数を計算することになっています。実際には、同じチケットとマジックを持つ別のEAによって開かれたリストから1つを選ぶだけなので、カウントは常に=0になります。
自分でもわかったのですが、選択はPositionGetSymbolで 行う必要があります。
自分で考えたのですが、選択はPositionGetSymbolで 行う必要があります。
よくわからない。PositionGetTicket(i)関数を使ってハッジ口座で選択し、シンボルとマジックを確認する必要があります。
把握するのはよくないですね。PositionGetTicket(i)関数でhadge口座で選択し、シンボルとマジックを確認する必要があります。
うん、良くなったね。デモでは他の機能も不具合があったんだけど、今は動くようになったよ。
こんにちは、このインジケーターについてアドバイスをお願いします https://www.mql5.com/ru/forum/94447#comment_6780067
価格が大きく変化したとき、つまり4ピップス以上変化したときに、チャート上に赤と青の丸を付けます。
価格が10pips以上変化したときだけシグナルが出るようにしたい。
こんにちは、このインジケーターについてアドバイスをお願いします https://www.mql5.com/ru/forum/94447#comment_6780067
価格が大きく変化したとき、つまり4ピップス以上変化したときに、チャート上に赤と青の丸を付けます。
価格が10pips以上変化したときだけ、このシグナルが出るようにしたい。
このインジケータは、ピップスではなく、シグマまたはRMS(二乗平均平方根偏差)を計算します。直近のNティック(デフォルトでは50)のサンプルについて。3シグマのチャンネルを構築します。価格がチャネルから飛び出した場合、ここをマークすることになります。しかし、主な問題は、最初の価格シリーズが非常に重いテールを持つ正規分布ではないことです。実はこのインジケーター、トイヘルなんです。
こんにちは。
小さなプログラムを書いています。まったく意味不明な事態に直面しています。
私のコードでは、この2行があります。OnTester()の一番最後にあり、ループ内ではありません。
そして、この行を実行した結果、予想外の結果が出たので紹介します。
以下は,関数MatOgidanieStavk の定義 です.
こんにちは。
小さなプログラムを書いています。まったく意味不明な事態に直面しています。
私のコードでは、この2行があります。OnTester()の一番最後にあり、ループ内ではありません。
そして、この行を実行した結果、予想外の結果が出たので紹介します。
以下は,関数MatOgidanieStavk の定義 です.
Stavkaはプリントの前に初期化されるのですか?
関数内部での最初の呼び出しであることは、どのように判断されるのですか?
どのような結果を期待していたのでしょうか?
ありがとうございます。問題を解決しました。
Printの前にStavkaの 変数があることが判明したのです。は-1に等しかった。その値はPrint関数に 渡され、コピーとして保存される。私の関数MatOgidanieStavk はStavka変数自体を変更した のであって、印刷されるそのコピーを 変更したのではありません。
2795/2797は0となります。四捨五入を行わないため。s3 = (double)s2/s1; または s2 と s1 に double を選択する。