[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 641

 
Craft:

では、どうすればいいのか?for(i=0;i<=PeriodS;i++) - を試しましたが、役に立ちませんでした。


すでにお伝えしているように

   for(i=1;i<=PeriodB;i++)
{
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
}
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);

iMAOnArrayはループの外側で実行されます(本来はそうあるべき)。これに対応して、i+2 = PeriodB + 2 となる。ArrayResize(c1b,PeriodB)の場合。

そして、実は ...i+」を「0,2,3」に置き換えてください。

 
SergNF:


既に書きましたように

iMAOnArrayはループの外側で実行されます(本来はそうあるべき)。これに対応して、i+2 = PeriodB + 2 となる。ArrayResize(c1b,PeriodB)の場合。

そして、実は ...i+」を「0,2,3」に置き換えてください。


ありがとうございます。言われたとおりに全部やったのに、なぜ注文が入らないのでしょうか?

正規化した場合としない場合の両方を試しました。

   double c1b[];
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   }
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   }
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);

 //if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
 if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
//if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }
 
gordeef:

すみません、すぐにお返事できず、ノートパソコンが完全に死んでしまいました。もう歯が痛くならないといいな、怖いな。私は告白し、私はバボンを非難していた、彼は正常に動作しますが、障害指標NMAZZは、私はそれをダウンロードした場所を覚えていないが、1つのチャートではまだ動作しますが、私は3チャート(5M、30M、4H)とすべてにそれを置く、コンピュータは完全に、というか端末がフリーズしました。チャートからインジケータを一つずつ削除し始めたら、このバグを発見しました。このインジケーターのどこが悪いのか分かりませんが、当初はうまく動作していました。そして、反転か修正かですが、おっしゃるとおり、常に反転ですが、30M、1H、4Hでバトンの色が変われば、反転でなければ、修正は確実で、ある程度の利益を出すことができるかもしれません。
そうですね...歯が痛いと不思議なことに...。どこまでいっても...:)もし、あるインディケータが好きで、それを使って仕事をしたい場合、iCustomか、Expert Advisorのコードに入れるか、どちらかだと思います。しかし、トレンドTPについては、動きの終盤、つまり反転前に買ってしまうことがあるので、注意が必要です。そうすれば、大鹿は宙吊りになります(昨日の歯並びの悪い私のように... :))。現在、トレンドの枯渇の定義に取り組んでいますので、その結果をお伝えできればと思います。
 
Craft:


ありがとうございます、言われた通り全てやりましたが、今、なぜ注文が入らないのでしょうか?

正規化する場合としない場合の両方を試しました。


このブロックにエラーがあるかどうかは、両方のifの後に "unpriming "するだけです(Opn_BとCls_Sを含む)。

よくわからないのですが、後からそれら(Opn_BとCls_S)を再指定するか、開くときに全く別の変数を使用するのでは?

 
artmedia70:
そうですね...歯が悪いと、不思議なことに...。どこまでいっても...:)

治療を試みていないのでは?効果があると言われています。
 
Vinin:

治療は試されましたか?役立つと言われています。
そうなんだ!生きて、学んで...。;)夜だけザコリューチンスクで歯医者が見つからない...。民間療法を使うしかなかった...。
 

みんな、奇跡は起きないってわかってるけど、どうしても勝てないんだ...。もう、ホッタビッチが座っていないか、テーブルの下を覗き込んでいます...。:)

EAのデータをインジケータウィンドウに表示しようとしたところ、同じウィンドウにトレンドを表示することにしました。 トレンドは、int -1、0、+1 の値を返す私の関数で計算しています。したがって、ダウントレンド=1、フラット=0、アップトレンド=1となります。矢印が思い通りに表示されるのに、TFによってトレンドの方向が違うことに気がつきました。そこで、矢印を長い間コメントアウトして、トレンド関数が返す値の出力に置き換えてみました。コードの2か所に、この関数が返す状態の出力を配置しました。この関数はその状態を正しく返します。チャートの左上には、この関数を呼び出した後に関数の値が直接表示されます。その下のインジケーターウィンドウには、ファンクションの値も表示されます。数値的にはすべて正しいのですが、定義上3つの数値しか返さない関数の4番目の値をどこかで取ってしまうのです...。で、この4番目の値で、インジケーターウィンドウに「Fuck you」というメッセージが表示される...。まあ、もう怒りにまかせて自分で書いてしまいましたが...。:)

何が問題なのか理解するのに役立つ?ハッサン・オブドゥラフマン・イブン・ホッターブなんて信じたくない...。:):)

   ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
//         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }

ここでは、すでに-1、1、elseだけでなく、4つの状態をすべてチェックするようにしました...。

そして、それが私にとってのアウトプットなのです。

trM15は変数で、トレンド関数が返す値が代入されます

画像では、値が正しく返されていることがわかりますが、「おかしな碑文」が印刷されるのは、if else

もう頭がパンクしそうです...。

 
artmedia70:

みんな、奇跡は起きないってわかってるけど、勝てないんだ...。もう、ホッタビッチが座っていないか、テーブルの下を覗き込んでいます...。:)

EAのデータをインジケータウィンドウに表示しようとしたところ、同じウィンドウにトレンドを表示することにしました。 トレンドは、int -1、0、+1 の値を返す私の関数で計算しています。したがって、ダウントレンド=1、フラット=0、アップトレンド=1となります。矢印が思い通りに表示されるのに、TFによってトレンドの方向が違うことに気がつきました。そこで、矢印を長い間コメントアウトして、トレンド関数が返す値の出力に置き換えてみました。コードの2か所に、この関数が返す状態の出力を配置しました。この関数はその状態を正しく返します。チャートの左上には、この関数を呼び出した後に関数の値が直接表示されます。その下のインジケーターウィンドウには、ファンクションの値も表示されます。数値は正しいのですが、定義上3つの数値しか返さない関数の4つ目の値をどこからか取ってきて......。つまり、この4番目の値で、インジケーターウィンドウには「Fuck you」というメッセージが表示されるわけです...。まあ、もう怒りにまかせて自分で書いてしまいましたが...。:)

何が問題なのか理解するのに役立つ?ハサン・オブドゥラフマン・イブン・ホッタブを信じたくない...。:):)

ここでは、すでに-1、1、elseだけでなく、4つの状態をすべてチェックするようにしました...。

そして、それが私にとってのアウトプットなのです。

trM15は変数で、トレンド関数が返す値が代入されます

図では、値が正しく返されていることがわかりますが、「おかしな銘文」はelseの場合のみ出力されます。

もう頭がパンクしそうです...。



そうなんです。

ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
//         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   else if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }

このバリエーションを試してみてください。

 
Vinin:


そうなんです。

これを試してみてはいかがでしょうか

OKです。ビクターさん、ありがとうございました。今のところ、正常に動作しています。これまでは、長い間フォローしていなかったからですが、今までTrend Upを出力してもらったことはありません。今なんです。


やっぱり、一人のソーサラーワナビーには、必ずもっと強いソーサラーワナビーがいるんだな・・・。:)

もちろん、冗談のつもりなのだが...。ビクター、私はただ正しい解決策をコピーしたいのではなく、問題がどこにあるのか、このような理解しがたいコードの動作の理由は何なのかを見つけ、理解 したいのです。

 
artmedia70:
そうですね...歯が悪いと、不思議なことに...。どこまでいっても...:)インジケータが好きで、それを使って仕事をしたい場合 - iCustomかEAコードのどちらか、だと思います。しかし、トレンドTPについては、動きの終盤、つまり反転前に買ってしまうことがあるので、注意が必要です。そうすれば、大鹿は宙吊りになります(昨日の歯並びの悪い私のように・・・ :))。現在、トレンドの枯渇の定義に取り組んでいるので、その結果を共有できればと思います。

そうですね......反転や補正については、今のままでは慎重になりたいと思っています。しかし、トレンドの枯渇に関しては私も興味があり、フォーラムを彷徨い、CodeBaseを見ましたが、このテーマに関する指標に出会うことはありませんでした。あなたの結果を読むのは興味深いことです。もう一つ質問があります。損失と利益をコントロールするEAを送ってもらいましたが、写真のように動作するはずです。しかし、質問は、15ポイントの利益があり、価格はさらに高くなる可能性があると思いますが、1つまたは別の取引で利益を増やすと、EAの一般的な計算と動作が壊れる可能性がありますか?