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

 
正直なところ、この言語でのプログラミングの基本に無知なため、個人的にはあまり理解できていませんが、独自の機能を持った伝説の男が活発なフォーラムに帰ってきたことは非常にうれしいです。でも、その事実自体がすごいことなんです!私は KIMIVを 全力で歓迎します。
 
 

こんにちは、機能を探しているのですが、用意されていますか?

テスト終了時に、各注文のドローダウンに関するデータを含むファイルを作成する必要があります。できれば、このファイルはテスト中ではなく、取引履歴 の1回限りの処理の最後に作成されることが望ましいのですが...。

 
そのような機能はありませんが、近い将来、現在開いているポジションの 最大ドローダウンをpips単位で計算する機能を公開する予定です。バーによるオーダーの受け渡しを解析する機能です。タイムフレームはパラメータの一つです。タイムフレームが小さいほど、最大ドローダウンの計算精度が高くなります。この機能をベースに、必要なことができるようになると思います。
 
KimIV:
そのような機能はありませんが、近い将来、現在のオープンポジションの ポイントの最大ドローダウンを計算する機能を公開する予定です。バーによるオーダーの受け渡しを分析する機能です。タイムフレームはパラメータの一つです。タイムフレームが小さいほど、最大ドローダウンの計算精度が高くなります。この機能をベースに、必要な ことができるようになると思います。

もし、その関数がファイルにもレコードを 持つなら、それは素晴らしいことです...。

しかし、現在のポジションのドローダウンを計算する必要性は特に感じません。この機能は、テスター(システムの動作解析)の方が有用だと思うのですが・・・。

 
renoshnik:

もし、その関数がファイルにもレコードを持つなら、それは素晴らしいことです...。

しかし、現在のポジションのドローダウンを計算する必要性は特に感じません。この機能はテスター(システム解析)の方が有用だと思うのですが・・・。

各注文のドローダウンをリアルタイムで計算し、すべてのデータをファイルに送信する」ことと、「各注文のドローダウンを計算し、テスト終了時にデータをファイルに送信する」ことは、何ら変わりません。ただし、最初の選択肢は極めて簡単で、2番目の選択肢は各注文のティック履歴を 記憶していなければ正確にはならない、ということです。
 
renoshnik:

こんにちは、機能を探しているのですが、用意されていますか?

テスト終了時に、各注文のドローダウンに関するデータを含むファイルを作成する必要があります。 できれば、このファイルはテスト中ではなく、取引履歴の1回限りの処理の最後に作成されることが望ましいのですが...。

由利さん、急遽、昔のExpert Advisorのコードを引っ張り出してきて......。
確認したところ、正常に動作しているようです。
deinit() のコードをフクロウに追加し、deinit の下にある 3 つの関数 (そのうち 1 つは Igor のもの) をコピーしてください)
.......
コードが緩い...。でも、イゴールが美しく作ってくれれば、十分な実験ができると思うんです。
 
lasso:
Yuriさん、急遽、古いEAからコードを引っ張ってきて...。
確認したところ、正常に動作しているようです。
deinit() のコードをフクロウに追加し、deinit の下にある 3 つの関数 (そのうち 1 つは Igor のもの) をコピーしてください)
.......
コードが緩い...。でも、イゴールがいい感じに仕上げてくれれば、十分実験できると思います。

素晴らしい、ありがとう !!!!!!!! 調べてみますね...。
 

イゴールさん、こんにちは。

御社のCrossPointOfLines関数(2本の直線の交点の座標を計算する)をExpert Advisorに組み込んでみました。その結果、It's failed to find the intersection point(交点を見つけることができませんでした)というコメントが書き続けられる。そして、交点を見つけることができません。

チャート上にトレンドラインという形で他のオブジェクトがあるからかな?あるいは、あなたかこのスレッドの常連の誰かが、私の問題が何であるかを教えてくれるかもしれませんね。

ありがとうございました。

コード - 添付ファイル内

ファイル:
 

HOORAY!自分で考えたんですけどね)他のトレンドのものが邪魔をして...。

配列と友達になるのは苦手なので、最大限簡略化した関数を作りました。今のところ、うまくいっているようです)。

//+------------------------------------------------------------------+
double Middle(string nm1,string nm2)
  {
  double M;
  double x0, x1, y1, x2, y2, x3, y3, x4, y4;
  double k1, k3;
  
  if(ObjectFind(nm1)==0 && ObjectFind(nm2)==0)
    {
    x1=ObjectGet(nm1, OBJPROP_TIME1);
    x2=ObjectGet(nm1, OBJPROP_TIME2);
    y1=ObjectGet(nm1, OBJPROP_PRICE1);
    y2=ObjectGet(nm1, OBJPROP_PRICE2);
    
    x3=ObjectGet(nm2, OBJPROP_TIME1);
    x4=ObjectGet(nm2, OBJPROP_TIME2);
    y3=ObjectGet(nm2, OBJPROP_PRICE1);
    y4=ObjectGet(nm2, OBJPROP_PRICE2);
    
    k1=(y2-y1)/(x2-x1); 
    k3=(y4-y3)/(x4-x3);
    
    if(k1 != k3)
      {
      x0 = (y1 - y3 + k3*x3 - k1*x1)/(k3 - k1);
      M = y1 + k1*(x0 - x1);
      }
    }
  return(M);
  }
//+----------------------------------------------------------------------------+