KimIVの便利な機能 - ページ 99

 
TarasBY писал(а)>>
TypeNearPos関数で条件を満たしたときのバグに気づきました。
成行価格=未決済注文価格である場合、この注文はこの機能では考慮されません。
この簡単な条件をコードに追加する必要があったのです。
この条件は、TypeNearPos()やPriceOpenNearPos()などの関数でも有効でしょう。


ppの 代わりにtiと 0を条件として比較する方が理にかなっている

if (ti==0 || pp>MathAbs(OrderOpenPrice()-mi)/p)
{
   pp=MathAbs(OrderOpenPrice()-mi)/p;
   ti=OrderTicket();
}
しかし、条件をそのままにしておくと、returnではなく breakで ループを抜けた方が良い。
if (pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p)
{
   pp=MathAbs(OrderOpenPrice()-mi)/p;
   ti=OrderTicket();
   if (pp==0)
      break;
}
 
こんにちは、イゴールさん。 こんにちは、皆さん。
イゴール、私はあなたの分野の優れた専門家、エキスパートとして話しているのです。
私の問題の本質は次のようなものです。
私のTSでは5つのインジケーターを使用していますが、そのうちの1つがTRAPです。不要な「ノイズ」を上手に取り除いてくれるのですが、とにかく「うまい」のです。信号線 用の0、2色チャート用の1、2の3つの描画バッファを持っています。TRAPシグナルラインが下降し、その下に赤いチャートがある場合 - 売却。シグナルラインが上昇し、チャートが青色になったら-買い。
手動では問題ないのですが、Expert Advisorからそのデータを取得しようとすると、拷問が始まり、現在に至っています。
デザインは...
   TRAPsig0=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,0,0);  // Сигнальная линия,       0 бар
   TRAPsig1=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,0,1);  // Сигнальная линия,       1 бар
   TRAPmnR0=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,1,0);  // Буфер цвета 1 (красн.), 0 бар
   TRAPmnR1=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,1,1);  // Буфер цвета 1 (красн.), 1 бар
   TRAPmnB0=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,2,0);  // Буфер цвета 2 (син.),   0 бар
   TRAPmnB1=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,2,1);  // Буфер цвета 2 (син.),   1 бар
...データを読み込むが、そのデータは私が期待したものとは全く違うものであった。バー0~7の3つのバッファ全てからデータを読み出し、画面に表示することを試した。ゼロバーは2147483647を含み、1本目は価格、2本目は価格、3本目は価格、4本目は再び2147483647等です。同時に、すべてのデータがティック単位で変化するわけではなく、変化するときは変化する。時にはかなり長い時間をかけて、時には素早く、私がまだ理解していない不思議なシステムに従って内容を変化させていくのです。まずそこに値段があるとしたら、この謎の数字かもしれないし、別の値段かもしれないし、同じかもしれない(線が上がって値段は上がるはずだが)、などなど......。
要するに、これらの読み物を体系化しようとする私の試みはすべて、私の頭脳はすでに衛生学者の体系化に委ねられているはずだという事実に帰結したのである......。:)
泣く泣くお断りします...。イゴール、このインジケーターを倒す方法についてアドバイスしてくれないかな?
あるいは、すでにこの問題に取り組んでいる達人の方々。
助けてください、すべての作業費が...。
ありがとうございました。
インジケーターそのものはトレーラーに搭載されています。
ファイル:
trap.ex4  4 kb
 
ゼロバーを使わないでください...。形成しているだけなので、ティック ごとにインジケーターの値が変わるということですが・・・。
 

ところで-イゴール自身はどこにいるのでしょうか?4、5カ月も姿を見せないんですよ!?

 
kharko >>:
не используйте нулевой бар.... Он только формируется, а значит, значение индикатора меняется с каждым тиком....

1番、2番、3番と試しましたが...。は、すべてのバッファーで7までのバーを試しました。信号が正しくない。価格を表示するシグナルは、例えば、1.3478のレベルまで価格が上昇した後、急激に1.3486になったり、価格が消えて未知の値2147483647が現れたり、3つのバッファの読みで1バーから別のバーにさまようこともあります.........。神の思し召しで...異なるバーの3つのバッファの読みに存在し、あるバーの価格を変更すると、この読みが別のバーやバッファに移動することがあります...。彼の論理には勝てなかった...。

 
artmedia70 >>:

вообще цена пропадает и появляется непонятное значение 2147483647...

2147483647 は 0x7FFFFFF です。

パラメータや変数の状態を示すために使用される特殊な定数。以下の値を設定することができる。

EMPTY_VALUE 0x7FFFFFF デフォルト値、空値へのポインタ。カスタムインジケータで 使用
 
artmedia70 писал(а)>>

1番、2番、3番と試しましたが...。は、すべてのバッファーで7までのバーを試しました。信号が正しくない。価格を表示するシグナルは、例えば、1.3478のレベルまで価格が上昇した後、急激に1.3486になったり、価格が消えて未知の値2147483647が現れたり、3つのバッファの読みで1バーから別のバーにさまようこともあります.........。神の思し召しで...異なるバーの3つのバッファの読みに存在し、あるバーの価格を変更すると、この読みが別のバーやバッファに移動することがあります...。彼の論理には勝てなかった...。


データウィンドウを開き(Ctrl+D)、マウスをインジケータに合わせ、そのインジケータがバーで何を保持しているかを確認します。ゼロバーでは計算されないし、EMPTY_VALUEについては既に書かれている通りです。

 
PapaYozh >>:


откройте окно данных (Ctrl+D), поводите мышью по своему индикатору и посмотрите что он имеет в барах. На нулевом баре он не рассчитан, а про EMPTY_VALUE Вам уже написали.

ああ、くそ!生きて、学ぶのだ!そして、以前はこのデータをチャートにプロットする、トレーディング以外のExpert Advisorを作っていたのですが...。:)))ティーポット、それも沸騰したお湯で...。:)
こんなに簡単にできちゃうんだ...。 どうもありがとうございました!!!!

 
PapaYozh >>:


Логичнее, в условии сравнивать с нулём не pp, a ti

Если же оставить условие как есть, то из цикла лучше выходить не по return, а по break.

その理由を説明してください。"returnではなく breakで ループを抜ける方が良い" ?
関数はreturnで 終了しますが、ループは breakで 終了するだけです。そのコツとは?

 

助けて、お願い...すでにいろいろと試したが...無理です...=(インジケータの交点を 求めたいのですが...。今までのヒントが全て役に立ちませんでした...=( もしかしたら、あなたが助けてくれるかもしれません...。

ファイル:
lastlast.mq4  13 kb