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

 
drknn:


1番目のパラメータは数値を返し、2番目のパラメータは許容範囲内の整数値なので、正しい。問題は、具体的に何が変数に入るかだ。このままプリントして、この作図を試してみてください。

面白いですねぇ...。こんな感じで作りました。

int Trend_BBOsMA (string sy, int tf)
{
   if (sy=="" || sy=="0") sy=Symbol();
double
   BB    =iCustom(sy,tf,"BB_MA",13,13,0,1),
   OsMA  =iOsMA  (sy,tf,9,21,5,PRICE_CLOSE,1),
   AC1   =NormalizeDouble(iAC(sy,tf,1),8),
   AC2   =NormalizeDouble(iAC(sy,tf,2),8),
   AC3   =NormalizeDouble(iAC(sy,tf,3),8);
   
   Comment("\n","AC1 = ",AC1," AC2=",AC2);
   string str1=AC1;
   Print("str1 = ",str1);
   string str2=AC2;
   Print("str2 = ",str2);
   
   if (BB>0 && OsMA>0 && AC1>AC2) return(1);
   if (BB<0 && OsMA<0 && AC1<AC2) return(-1);
   else return(0);
}
コメント表示

as1 = 0.001 as2 = 0.001,

データウィンドウでは、AC1=0.001008、AC2=0.001020となります。

とログに書かれています(最後の2つの値)。

0.00100029
0.00100771

 
IgorM:

関数の極値の求め方がわからない

値を格納するデータ配列があります。

250要素のデータ配列から割れ目-極値を求め、その極値が存在する要素番号のみを格納する方法


みんな、ちょっと複雑なんだけどね :)
簡単な方法をスケッチしておくとよいでしょう。

//+------------------------------------------------------------------+
void searchExtremums(double base[], double &find[]){
   int step = 1;
   for(int loop = 0; loop < ArraySize(base)-2; loop++){
      if((base[loop] > base[loop+1] && base[loop+1] < base[loop+2]) || (base[loop] < base[loop+1] && base[loop+1] > base[loop+2])){
         ArrayResize(find, step);
         find[step - 1] = base[loop+1];
         step++;
      }
   }   
}
//+------------------------------------------------------------------+

極値を見つけたい配列(base)と、それを書き込む配列(find)を渡す、Vladimir配列の呼び出し例です。

double res[];
searchExtremum(my_array, res);

そして、その結果をお見せします。

for(int s = 0; s < ArraySize(res); s++)Alert(res[s])
その方が簡単なようです :)
 
ToLik_SRGV:


よりシンプルになったような気がします :)


OK、今日確認してみます。もっと簡単かもしれませんが、頭の中で組み合わせがうまくいきません。

void searchExtremums(double base[], double & find[]){。

あとは、以下のような関数をチェックする必要があります。

 
IgorM:

OK、今日確認してみます。もっと簡単かもしれませんが、頭の中で組み合わせがうまくいきません。

void searchExtremums(double base[], double & find[]){。

このような機能を確認する必要があります。

イゴール、このスレッドですでに書いています :)))

関数に変数を渡す場合、そのパラメータを通じて、変数は値で渡されます。これは、関数自体の中で変数を変更しても、上書きされないことを意味します。
パラメータ名の前に"&"を入れて、参照渡しを試みる。

void simple(string &s){
//                 ^
//       спец сим. & перед именем переменной задает передачу по ссылке, а не по значению
//
}
 
Mathemat:

Volframの 投稿は複数のスレッドに伝播したため、削除されました。

ヴォルフラム、このために特別に自分のスレッドを作ってくれたんですね。すでに答えが出ている。それでは不十分なのでしょうか?

追伸:秘密を教えてあげよう、ヴォルフラム。あなたのアイデアに明らかな関心がないことは、そのアイデアが注目に値しないことを暗に示しているのだ。従って、「有償で」実施しようという人はいなかった。

メール通知オプションはキャンセルしたんでしょう?

返信があったかどうかも、これでないとわからないのでは?いつ返してくれるんだ?

 
artmedia70:

面白いですねぇ...。こんなことをしました。

コメントも同時に表示されます

as1 = 0.001 as2 = 0.001,

データウィンドウでは、AC1 = 0.001008、AC2 = 0.001020です。

とログに書かれています(最後の2つの値)。

0.00100029
0.00100771


それは、開発者次第でしょう ;)
 
artmedia70:

面白いですねぇ...。こんなことをしました。

コメントも同時に表示されます

as1 = 0.001 as2 = 0.001,

データウィンドウでは、AC1 = 0.001008、AC2 = 0.001020です。

とログに書かれています(最後の2つの値)。

0.00100029
0.00100771

私も試してみましたが、すべて問題ないようです、コメントで。
AC = -0.0004、本誌では -0.00035586
AC2 = -0.0007、ジャーナル -0.00068589
 
ToLik_SRGV:
私はあまりにも試してみました、すべてが正常に思える、コメントで: AC = -0.0004, ジャーナルで -0.00035586 AC2 = -0.0007, juranleで -0.00068589 。


Comment()は内部で値を丸めているようです...。そして、ビジュアルテストの 際に、その場で確認できることがどんなに便利なことか...。ただし、正確には...:)

はい、そして、ところで、正規化のフォーラムでここに時間のカップルから午前7.30にそう読んで...
正規化は、できるだけ比較演算の近くで行うべき...そのため、いくつかの関数やコードの一部を変更する必要があると思います......。そして、テストではその違いがわかるように...。

 
artmedia70:

Comment()は内部で値を丸めているようです...。そして、ビジュアルテストの際に、その場で確認できることがどんなに便利なことか...。ただし、正確には...:)

ロット管理機能を書いていた時、MQL4で必要なタスクが解決できないので、Delphiでdll-libraryを作ったことがあります...。
 

こんにちは!MQL4の超ド素人の私に、何が正しいのか説明していただけませんか?初めてEAを書きます。SellStop注文を出し、それがトリガーされた後にBuyStop注文を出す。OrdeCloseTimeを使う必要がありそうです。多くのバリエーションを試しましたが、EAはOrdeCloseTime==0の時だけ注文を見ます。SellStopが閉じられた後、再びSellStopが開かれます。コードをお渡ししています。このバリエーションでは、SellStopとBuyStopが同時に開かれます。よろしくお願いします。よろしくお願いします。

int I = 0;

int start()

{

if (I < 1)

{

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,OP_SS,Slippage,SL,CP_SS)。

if (ticket>0)

{ Alert("OrderSend"," ",ticket);}。else { Alert("!OrderSend","",GetLastError()); }.

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

if (OrderSelect(ticket,SELECT_BY_TICKET)==true)

{ Alert("OrderSelect", ",ticket);}。else { Alert("!OrderSelect"," ",GetLastError()); }.

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

OrderSend(Symbol(),OP_BUYSTOP,Lot,OP_BS,Slippage,SL,CP_BS)を実行。

}

I=1;

}

を返します(0)。

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