[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 525

 
Sarguss:

こんばんは。

コーディングに関しては、ちょっと「クルクルパー」なんです :)フィボナッチ指標に基づいたExpert Advisorを構築しています。今のところ、戦略へのこだわりはない。問題は7つのフィボナッチレベルですが、それぞれのレベルをクロスさせる方法は、2種類の保留注文だけを設定し、それ以上は設定しないことです。

何かヒントがあれば幸いです。

ぎこちないロシア語で申し訳ありません。


仕事内容

追伸:「フナにはカマス」(ロシアの諺)。

削除済み  
Roll:


仕事内容

追伸:「フナにはカマス」(ロシアの諺)。


ことわざをありがとうございます:)))本題に入ります。

どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Without you nowhere - 4.

完成させる - どんな答えでもProfi!

[Deleted]  

こんにちは、専門家の皆さん、スクリプトを作るのを手伝ってください。チャートには2つのMA(移動平均 線)指標があり、MA1が赤、MA2が青で表示されています。スクリプトのタスクは、MA1とMA2を交差させ、赤い線が青い線を上から下へ交差するようにすることである。そこで、A点では売り注文を決済して買い注文を出し、B点では買い注文を決済して売り注文を出すスクリプトが必要です。このループは無限大になるはずです。似たようなコードを添付します。

ファイル:
 
Lisi4ka330:
混乱を悪化させないために、前回の回答での間違いを訂正したいと思います。"array1[Bars*6-60,60][0]"という表記は、Bars*6がarray1の要素の合計数なので、正しくありません。各バーには6つのプロパティがあり、仮にバーが30本あるとすると、6を掛けると最初の配列の要素数である180が得られます。2番目の配列には60個の空き「セル」(つまり10×6のプロパティ)しかないので、1番目の配列から60個の要素だけを選んでコピーする必要があります。Bars*6-60,60]という式を使って、合計から60を引く、つまり180 - 60 = 120となり、最初の配列の120の要素が2番目の配列の0要素に、121が最初の配列にコピーされ、以下同じとなります。もう一つの疑問は、最後に形成された小節の情報が、最初の配列の最初ではなく、最後に書かれていることが、どうして分かったのか、ということです.しかし、どうやら答えは関数コードの中にあるようで、これ以上掘り下げても意味がないようです...。


まあ、データベースがあるから、関係ないんですけどね。ナターリアは論理的に正しく書いている。また、バーが30本ある場合でも、array1の インデックス値は120です。これに伴い,初期化時にarray2 の対応するインデックスの値を10と宣言して います.

https://docs.mql4.com/ru/array/ArrayCopy

double array2[10][6];

Cの本で、私はそう読んだ。

C 言語は配列のオーバーランを制御しないので、技術的にはの ように、存在しないインデックスを持つ要素に何かを書き 込むことができますしかし、その際、アレイに属さないメモリ上のセルを消去することになるので、そのようなステップの結果は予測不可能で、多くの場合、プログラムはハングアップして しまうのです。

その結果,配列1(コピー元配列)の インデックスが配列2(コピー先配列)の対応するインデックスより大きいことが判明しました.そして、結果的にそういうやり方はしない方がいい!ということです。そういうことなんだ...。

 

みなさん、こんにちは。

初めてEAを書こうとしたのですが :-) 、いくつか困難が生じました。

過去n本のバーの最大値と最小値を表示するインジケータがあり、最大値または最小値を割ったら注文を出すというロジックです。

EAをチャートに貼り付けると、売りポジションを オープンしてしまいます。なぜそのようになるのかはわかりません。

インジケーターのパラメータを送信するiCustom()関数でエラーになっているのだと思います。

EAとインジケータを添付します。

ファイル:
xox.mq4  10 kb
 
そして、その指標となるのがこちら。
ファイル:
go_go_1.mq4  2 kb
 
Pacman:

皆さん、こんにちは。

初めてEAを書こうとしたのですが :-) 、いくつか困難が生じました。

過去n本のバーの最大値と最小値を表示するインジケータがあり、最大値または最小値を割ったら注文を出すというロジックです。

EAをチャートに貼り付けると、売りポジションをオープンしてしまいます。なぜそのようになるのかはわかりません。

インジケーターのパラメータを送信するiCustom()関数でエラーになっているのだと思います。

Expert Advisorとインジケータを添付します。

インジケータ配列の0番目のインデックスを埋めない。

   for(k=1; k<=Quant_Bars; k++)
      {
       Line_1[k]= Minimum;
       Line_2[k]= Maximum;
      }

が、それにアクセスする。

   double L_1= iCustom(NULL,0,"Go_go",K,0,0);  //Линия минимума
   double L_2= iCustom(NULL,0,"Go_go",K,1,0);  //Линия максимума 

ちょっと(構造的に)不格好ですが、最初のうちはこれで大丈夫でしょう。アドバイス:「コードを書くための正しいアプローチにすぐに慣れること」。例えば、この条件をコードで使用します。

       if(Total==0 && Opn_B==true)              //Открытых ордеров нет + 
なぜなら、遅かれ早かれ、テスターからオンライン取引に切り替わり、複数のExpert Advisorが並行して動作するようになり、このコードは動作しなくなるからです。
 
Pacman:
そして、その指標となるのがこちら。

iHighest()iLowest()のどこが問題なのでしょうか?
 
 
0xはまさに16桁の数字です。