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

 
rid:

今度はコメント-Comment(isCloseLastPosByStop())に関数を入れました。

テスターでテストしているのでしょうか?テスターでは、確かに、2つ以上の最後のクローズポジションが異なるOrderCloseTime()を持たない状況があるかもしれません。

 

なるほど。テスター内で複数のポジションが同時にクローズされた場合(信号に従って)、isCloseLastPosByStop()関数が「グリッチ」して動作しないことがあるのでは?しかし、オンラインではうまくいっているようです。

はい、-今テスターで1ポジションで作業している時に確認しました。すべて正常に動作しますコメント(isCloseLastPosByStop())でストップロスによるクローズを正しく表示し、他の理由によるクローズの場合は時間差でフラグを変更する機能。

 
rid писал (а):
なるほど。テスター内で複数のポジションが同時にクローズされた場合、isCloseLastPosByStop()関数が「グリッチ」して動作しないことがあるのでは?

はい、isCloseLastPosByStop() は、秒単位で測定される最大終値によって最後の終値を 特定するためです。そのため、複数のポジションが閉じるまでに1秒以上の時間が必要です。テスターでは、1秒未満しか経過しないこともあります。

rid wrote:
そして、オンラインはどうやらうまくいきそうです。
オンラインモードでも不具合が発生することがありますが、テスターに比べればはるかに少ないです。自動売買ロボットでも、ポジションを決済するのに時間がかかる。もし、より確実に最終閉位置を特定する方法があれば、ありがたく受け入れて、機能の改造を試みたいと思います。
 

KimIVさん、こんにちは。アドバイスというか、助けてほしいんです。start()関数はティック単位ではなく、新しいティックが来たかどうかに関係なく、1秒ごとに実行されるようにする必要があります。この作業をどのように実施しようとしたかを紹介します。

int start()
  {
   if(first==true)return(0); 
   else 
   {   
      for(int j=0;j<10;j++)
         {
         RefreshRates();//обновляем котировки 

         //Код эксперта

         first=true;
         Sleep(1000);//задержка в 1 секунду
         j=0;
         }
   }
   return(0);
  }
 
StatBars писал (а):
新しいティックが来たかどうかに関係なく、1秒ごとにstart()関数が実行されるようにしたい。

こんな感じでやっています。

void start() {
  while (IsExpertEnabled() && !IsStopped()) {
    // код .............
    Sleep(1000);
  }
}
 

本当にありがとうございました!!!!私のコードが動作するかどうかさえ、まだ教えていただけますか?テスターではありませんが・・・。テスターで動くのか...?それとも、私が...

Void start()...

 
StatBars писал (а):
また、私のコードが全く機能しないかどうか教えてください。

調べてないので分かりませんが...。

StatBars さんが書き込みました(a):
テスターにない...実戦で通用するのか......?

テスターでは、どんなループしたものでも動作しない。ダニのやつしか効かないのか・・・。

オンラインでは、あなたのコードは動作しているように見えるはずです。少なくとも論理的には成立しているように思えるのですが...。

スタットバー

あるいは、あなたが...

Void start()...

いや、その必要はない。ただ、型付けされた関数が値を返さず、もし返したとしてもその値がどのように使われるわけでもないのに、なぜ型付けされた関数を宣言するのでしょうか?
 

なるほど。また、ありがとうございました。

 
KimIV:
.もし、より確実に最終閉位置を特定する方法があれば、ありがたく受け入れて、機能の再設計に努めたいと思います。

ご丁寧なお申し出ありがとうございます。残念ながら、良いアイデアが頭に浮かぶことはあまりありません(残念...)。少し前のことですが、例えば、あなたの関数が「コンポーネント」であるOrderCommentを ほとんど使っていないことに気がつきました。

しかし、この機能を応用することで、もしかしたら新しい発想が生まれるかもしれません(その場にいる全員が喜びます)。

例えば、if (OrderComment()==" [sl]" && ...の場合。- は、できる仕事の幅が広がるかもしれませんね

//---------------------------------------------------------------------------------

"機能が増える、-良いこと、違うこと!"(c)

 
rid:
KimIV:
.もし、より確実に最終閉位置を特定する方法があれば、ありがたく受け入れて、機能の修正を試みたいと思います。

例えば、if(OrderComment()==" [sl]" && ...のような感じです。- は、行うべきタスクの幅を広げるかもしれませんね

rid さんは、注文コメントでエントリーによるストップのトリガーを特定する方法を提案されていましたね。ありがとうございます。しかし、コメントで[sl]以外のエントリーがあるかもしれません。

私は終値と逆指値を比較することで同じ問題を解決しています。