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

 

昔、プログラミングの基礎を学んだ(25年前 - Algol 60 :))当時は、アルゴリズム(正方形、ひし形)を作るところから始まり、そのアルゴリズムを言語で記述していました。今はアルゴリズムもコマンドも表示されない。

mql4で何か良いチュートリアルのお勧めはありますか?できれば、専門家による アルゴリズムからの具体的な執筆 例があるとよい。

 
v721965 писал(а)>>

昔、プログラミングの基礎を学んだ(25年前 - Algol 60 :))当時は、アルゴリズム(正方形、ひし形)を作るところから始まり、そのアルゴリズムを言語で記述していました。今はアルゴリズムもコマンドも表示されない。

mql4で何か良いチュートリアルのお勧めはありますか?できれば、アルゴリズムから始まるEAライティングの具体的な事例があるとよい。

https://book.mql4.com/ru/

 
alvish >> :
プロが助言してください、MLL5言語ヘルプによると、N期間の最大高を計算する方法関数iHighestはありません? ...私はcopyHighとfmaxを試してみましたが、特定の期間のみ、もちろんその、ヘルプではない

以下はその一例です。

         int shift_Box_Start = iBarShift(NULL, 0, TimeBoxStart);
         Box_Start_High      = High[iHighest(NULL, 0, MODE_HIGH, shift_Box_Start- i, i+1)];
         Box_Start_Low       =  Low[iLowest(NULL,  0, MODE_LOW,  shift_Box_Start- i, i+1)];

ただ、シフターをちゃんと作ってください。

 

1.テスト モードでEAをビジュアライズして動かしてみる。EAはシンプルで、Alertでメッセージを生成します。Alertがinitの場合、開始時にメッセージが表示されます。起動中の場合、EAは新しいティックに反応しません。何が問題なのか?

2.同じテストモードで、Time[1]、Close[1]、...の値を表示するスクリプトも起動しました。(参考)です。これらの値は、ティック受信やチャートに形成されたバーの時間ではなく、現在の(実際の)時間に基づいていることがわかりました。何ができるのか?

 
Roger писал(а)>>

EURGBPの場合、ショート-0(Alpariのこと)、ロング-0.68となり、これはまさにドル建てです。

アルパリの場合、スワップ計算の種類は0、私のは1です。

でも、あらゆる計算を知る必要があるんです。

掛け算、割り算、掛け算なしなど、あらゆる組み合わせを試しました。

以下は、これらの計算を行い、実際のスワップ値に最も近い値を返すコードです。

int a,b,c,d,dd;

dd=1;

double raznica;

for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

int a_=0,b_=0,c_=0,d_=0;

raznica=1000000;

OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);

if(OrderSwap()!=0){

if(OrderType()==OP_BUY){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

double gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPLONG),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_BUY){

if(OrderType()==OP_SELL){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPSHORT),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_SELL){

}//if(OrderSwap()!=0){

}//for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

アルパリもBROCOも結果が出なかった。

すなわち

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

OrderLots()

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

MarketInfo(OrderSymbol(),MODE_BID)

スワップ計算には不十分。

他に何かあるはずだが、それは何だろう?

 
チーフ2000さん、ありがとうございます、しかし、あなたは標準のiHighestと iLowestを通して書きました、それが問題です、そして、それらはmql 5にありません。
 
alvish >> :
chief2000さんありがとうございます、でも標準のiHighestとiLowestはスルーして書いてますね、これがmql5の問題点です。

今になって、質問をよく読んでいなかったことに気がつきました。

バージョン5では、本当にすべてを手動で記述しなければならないのでしょうか?何かがおかしい。ドキュメントに問題があるのでは?

 
すぐそこ
 
vasya_vasya >> :

アルパリの場合、スワップ計算の種類は0、私のは1です。


Vasya、なぜあなたは悩むのですか? 私はあなたにここで非常に簡単に説明しました'mql4におけるスワップ'

詳しく説明します。

全部で4つのバリエーションがあります。

それぞれ異なる方式で

 
kaisa писал(а)>>

Vasyaさん、なんでそんなこと言うんですか? mql4のスワップについて 簡単に説明しましたよ。

必要ならもっと詳しく説明しますよ。

全部で4つのバリエーションがあります。

はそれぞれ別の式で

そうだ、他の数式も教えてください。