MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 738 1...731732733734735736737738739740741742743744745...1953 新しいコメント Alekseu Fedotov 2019.01.16 20:37 #7371 novichok2018:12分になってもメッセージが表示される。Printを挿入し、配列が満たさ れる関数の最初にあること Print("Range = ", ArrayRange(NewsArr,1)); を表示し、2次元の値の数を表示します。 novichok2018 2019.01.16 20:47 #7372 Ilya Prozumentov:全てからわかるのは、NomNewsはすでに999より大きい状態でWhileループに入るということです。それなら、なぜそうなるのかを調べて、この変数をどこかでリセットする必要があります。 これを確認するには、ループの最初に書きます。 はい、11分目でプリントは1000枚です。 novichok2018 2019.01.16 20:53 #7373 Alekseu Fedotov:Printを挿入し、配列が満たさ れる関数の最初にあること を表示し、2次元の値の数を表示します。Whileループの 最初に挿入したところ、infiniteRange = 1000となりました。 挿入する場所が悪かったのでしょうか? この数値(関数?)は何ですか: datetime TimeNewsFunck(int nomf){文字列 s=NewsArr[0][nomf];string time=StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4)) のようになります。return((datetime)(StringToTime(time) + GMTplus*3600))} また、int nomfの値はどこから取得しているのでしょうか?見つからなかったんです。 novichok2018 2019.01.16 21:12 #7374 novichok2018:Whileループの 最初に挿入したら、infiniteRange = 1000となりました。 挿入する場所を間違えたのでしょうか? そして、この数値(関数?)は何なのか: datetime TimeNewsFunck(int nomf){文字列 s=NewsArr[0][nomf];string time=StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4)) のようになります。return((datetime)(StringToTime(time) + GMTplus*3600))} また、int nomfの値はどこから取得しているのでしょうか?見つかっていません。そして、試行錯誤の末にたどり着いたのが、この機能です。もしかして、それが元凶なのでしょうか? bool CheckInvestingNews(int &pwr,datetime &mintime) { bool CheckNews=false; pwr=0; int maxPower=0; if(MidleNews || HighNews) { if(TimeCurrent()-LastUpd>=Upd){Print("Investing.com News Loading...");UpdateNews();LastUpd=TimeCurrent();Comment("");} WindowRedraw(); //---Draw a line on the chart news-------------------------------------------- if(DrawNewsLines) { for(int i=0;i<NomNews;i++) { string Name=StringSubstr("NS_"+TimeToStr(TimeNewsFunck(i),TIME_MINUTES)+"_"+NewsArr[1][i]+"_"+NewsArr[3][i],0,63); if(NewsArr[3][i]!="")if(ObjectFind(Name)==0)continue; if(OnlySymbolNews && StringFind(ValStr,NewsArr[1][i])<0)continue; if(TimeNewsFunck(i)<TimeCurrent() && Next)continue; color clrf=clrNONE; if(HighNews && StringFind(NewsArr[2][i],"High")>=0)clrf=HighColor; if(MidleNews && StringFind(NewsArr[2][i],"Moderate")>=0)clrf=MidleColor; // if(LowNews && StringFind(NewsArr[2][i],"Low")>=0)clrf=LowColor; if(clrf==clrNONE)continue; if(NewsArr[3][i]!="") { ObjectCreate(0,Name,OBJ_VLINE,0,TimeNewsFunck(i),0); ObjectSet(Name,OBJPROP_COLOR,clrf); ObjectSet(Name,OBJPROP_STYLE,LineStyle); ObjectSetInteger(0,Name,OBJPROP_WIDTH,LineWidth); ObjectSetInteger(0,Name,OBJPROP_BACK,true); } } } //---------------event Processing------------------------------------ int ii; for(ii=0;ii<NomNews;ii++) { int power=0; if(HighNews && StringFind(NewsArr[2][ii],"High")>=0){ power=3; MinBefore=HighIndentBefore; MinAfter=HighIndentAfter; } if(MidleNews && StringFind(NewsArr[2][ii],"Moderate")>=0){ power=2; MinBefore=MidleIndentBefore; MinAfter=MidleIndentAfter; } // if(LowNews && StringFind(NewsArr[2][ii],"Low")>=0){ power=1; MinBefore=LowIndentBefore; MinAfter=LowIndentAfter; } if(NFPNews && StringFind(NewsArr[3][ii],"Nonfarm Payrolls")>=0){ power=4; MinBefore=NFPIndentBefore; MinAfter=NFPIndentAfter; } if(power==0)continue; if(TimeCurrent()+MinBefore*60>TimeNewsFunck(ii) && TimeCurrent()-MinAfter*60<TimeNewsFunck(ii) && (!OnlySymbolNews || (OnlySymbolNews && StringFind(ValStr,NewsArr[1][ii])>=0))) { if(power>maxPower){ maxPower=power; mintime=TimeNewsFunck(ii); } }else{ CheckNews=false; } } if(maxPower>0){ CheckNews=true; oppoz=true; } } pwr=maxPower; return(CheckNews); } Ilya Prozumentov 2019.01.16 21:36 #7375 novichok2018:そして、いくらやってもわからない機能があるんです。もしかして、そこに問題があるのでは? それを自分で考えるのは作者だけです。OnTick()からコードを送信した方が良い。 Alekseu Fedotov 2019.01.16 21:56 #7376 novichok2018:そう、11分目にプリント1000を出したのです。置き換えてみてください while(!IsStopped()) をこのセリフで。 while(NomNews<300 && !IsStopped()) Aliaksei Karalkou 2019.01.17 06:24 #7377 Ilya Prozumentov: 式中の((2*psd*usd)*((2*psd*usd)-C))/(C-1))を超える場合。 指数関数的に計算する場合: ^0.5 は *0.5 ではないルックスルーのシンボルとマジックの取引が1件もない場合、または損益が1件もない場合、または1組しかない場合(C=1)には、0による除算が行われます。 計算式自体の前に、psd と usd が > 0 であることと、C !=1 であることを確認する必要があります。 利益が出ているペアは、利益>1、損失<1で計算され、利益=1のペアは分析されない、つまり1もこのグループかあのグループのどこかに含まれなければならない。 この関数では、まずシンボルとマジックナンバーに一致する取引番号を選択し、番号が変わったかどうかをチェックし、変わった場合は zn を再計算し、変わらない場合は zn を返すようにするとよいでしょう(この場合の zn はゼロ化せず、印刷時に != 0 をチェックする必要がありません)。 Owlは、変数wwとnnに依存しているため、あなたの関数が動作すると、それらが変化してowlのアルゴリズムが壊れるので、動作しなくなります。 コードの設計ミスがあれば、何もコンパイルできなかったでしょう。ありがとうございますとしか言いようがない。runetの中で唯一助けてもらった場所です。 これでプリンタは次のように「Stop_Ma_v_5.1 EURUSD,M15: == Z-count equals = -nan(ind) 」と生成します。その意味と、コードが返すべき数値をアドバイスしていただけませんか? コード: //+------------------------------------------------------------------+ //| Подсчёт z-вероятности. @axe44 Алексей Корольков | //+------------------------------------------------------------------+ double Z() { zn=0; // z-число psd=0; // кол. положительных сделок usd=0; // количество отрицательных сделок www=0; // боол переменная nnn=0; // боол переменная kolichestvo=0; // подсчёт закрытых ордеров открытых роботом C=0; // C = количество чередований между отрицательными и положительными сделками index=OrdersHistoryTotal(); if(OrdersHistoryTotal()>302) index=301; // берём не более 301 сделки //if(index<30) return(0); // берём не менее 30 count=OrdersHistoryTotal(); // считаем от скольки prom=count-index; // выделяем только последние сделки if (prom<0) prom=0; // исключаем ошибки for( i=prom;i<=count;i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {// далее магия pribul=OrderProfit(); if (ww==0&&pribul>1){C++;www=1;nnn=0;}// подсчитываем смену тенденции if (nn==0&&pribul<1){C++;www=0;nnn=1;}// подсчитываем смену тенденции if (pribul>1){psd++;}//прибыльные сделки if (pribul<1){usd++;}// убыточные сделки kolichestvo++; } } } /* Величина Z = (A * (C — 0.5) — B)/ ((B*(B — C))/(C -1))^(1/2), где: A = количество анализируемых сделок; B = 2*количество прибыльных сделок * количество убыточных сделок; C = количество чередований в выборке (чередованием считается каждая пара сделок, когда прибыльная сделка сменяет убыточную либо наоборот). */ if(kolichestvo>30&&psd>0&&usd>0&&C!=1) zn=(index*(C-0.5)-2*psd*usd) / pow(((2*psd*usd*(2*psd*usd-C))/(C-1)),0.5); return(zn); } ありがとうございました。 Aliaksei Karalkou 2019.01.17 06:39 #7378 aleksandr bebishev:Mql5の皆さん、ヘッジ口座のポジションを決済 する依頼をするのを手伝ってくれませんか?状況:買いポジションを持ち、売り指値で決済する必要がある。質問:選択したポジションを 正確に決済し、新規の売りロック買いを行わないようにするには、どのようにリクエストを書けばよいのでしょうか?コメント付きのコードを書いてくださいありがとうございました。同じシンボルについて、ある新規注文が別の新規注文の反対方向で閉じること。 boolOrderCloseBy() intticket,// 決済する注文の番号intopposite,// 逆順の番号色arrow_color// 色 );パラメータチケット[クローズする注文の固有注文番号対極[逆順のユニークなシーケンス番号。矢印の色[チャート上の終値の矢印の色。このパラメータがない場合、または値がCLR_NONEの場合は、チャートに矢印は表示されません。戻り値関数が成功した場合はtrueを、エラーが発生した場合はfalseを返す。エラー 情報を取得するには、GetLastError() を呼び出します。例if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)とする。 {OrderCloseBy(order_id,opposite_id;)です。 return(0) です。 } 追伸:このスレッドではMQL4のみを解析しています。 どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - [ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you Any questions from newcomers Artyom Trishkin 2019.01.17 08:51 #7379 Aliaksei Karalkou:ありがとうございますとしか言いようがない。ルネットの中で、唯一、彼らが助けてくれた場所です。 ここでプリンタは次のように「Stop_Ma_v_5.1 EURUSD,M15: == Z-Account Equals = -nan(ind) 」と生成します。その意味と、コードが返すべき数値をアドバイスしていただけませんか? コード: ありがとうございました。 ナン - NaN - 数字ではない - 数字ではないZ計算の数値を正規化して みる Artyom Trishkin 2019.01.17 08:53 #7380 Aliaksei Karalkou:ある未決済注文を、同じ商品の別の未決済注文が反対方向に決済すること。 boolOrderCloseBy() intticket,// 決済する注文の番号intopposite,// 逆順の番号色arrow_color// 色 );パラメータチケット[クローズされる注文のユニークな連番。対極[逆順のユニークなシーケンス番号。矢印の色[チャート上の終値の矢印の色。このパラメータがない場合、またはその値がCLR_NONEの場合は、チャートに矢印は表示されません。戻り値関数が成功した場合はtrueを、エラーが発生した場合はfalseを返す。エラー 情報を取得するには、GetLastError() を呼び出します。例if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)とする。 {OrderCloseBy(order_id,opposite_id;)です。 return(0) です。 } 追伸:このスレッドではMQL4のみを解析しています。いいえ、mql4やmal5に関する質問はこのスレッドで扱います。アルゴリズムやコードだけでなく、mql4からmql5への移行を促進することが主な目的でしたから。 1...731732733734735736737738739740741742743744745...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
12分になってもメッセージが表示される。
Printを挿入し、配列が満たさ れる関数の最初にあること
を表示し、2次元の値の数を表示します。
全てからわかるのは、NomNewsはすでに999より大きい状態でWhileループに入るということです。それなら、なぜそうなるのかを調べて、この変数をどこかでリセットする必要があります。
これを確認するには、ループの最初に書きます。
はい、11分目でプリントは1000枚です。
Printを挿入し、配列が満たさ れる関数の最初にあること
を表示し、2次元の値の数を表示します。
Whileループの 最初に挿入したところ、infiniteRange = 1000となりました。 挿入する場所が悪かったのでしょうか?
この数値(関数?)は何ですか: datetime TimeNewsFunck(int nomf)
{
文字列 s=NewsArr[0][nomf];
string time=StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4)) のようになります。
return((datetime)(StringToTime(time) + GMTplus*3600))
}
また、int nomfの値はどこから取得しているのでしょうか?見つからなかったんです。
Whileループの 最初に挿入したら、infiniteRange = 1000となりました。 挿入する場所を間違えたのでしょうか?
そして、この数値(関数?)は何なのか: datetime TimeNewsFunck(int nomf)
{
文字列 s=NewsArr[0][nomf];
string time=StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4)) のようになります。
return((datetime)(StringToTime(time) + GMTplus*3600))
}
また、int nomfの値はどこから取得しているのでしょうか?見つかっていません。
そして、試行錯誤の末にたどり着いたのが、この機能です。もしかして、それが元凶なのでしょうか?
そして、いくらやってもわからない機能があるんです。もしかして、そこに問題があるのでは?
それを自分で考えるのは作者だけです。OnTick()からコードを送信した方が良い。
そう、11分目にプリント1000を出したのです。
置き換えてみてください
をこのセリフで。
式中の((2*psd*usd)*((2*psd*usd)-C))/(C-1))を超える場合。
指数関数的に計算する場合: ^0.5 は *0.5 ではない
ルックスルーのシンボルとマジックの取引が1件もない場合、または損益が1件もない場合、または1組しかない場合(C=1)には、0による除算が行われます。
計算式自体の前に、psd と usd が > 0 であることと、C !=1 であることを確認する必要があります。
利益が出ているペアは、利益>1、損失<1で計算され、利益=1のペアは分析されない、つまり1もこのグループかあのグループのどこかに含まれなければならない。
この関数では、まずシンボルとマジックナンバーに一致する取引番号を選択し、番号が変わったかどうかをチェックし、変わった場合は zn を再計算し、変わらない場合は zn を返すようにするとよいでしょう(この場合の zn はゼロ化せず、印刷時に != 0 をチェックする必要がありません)。
Owlは、変数wwとnnに依存しているため、あなたの関数が動作すると、それらが変化してowlのアルゴリズムが壊れるので、動作しなくなります。
コードの設計ミスがあれば、何もコンパイルできなかったでしょう。ありがとうございますとしか言いようがない。runetの中で唯一助けてもらった場所です。
これでプリンタは次のように「Stop_Ma_v_5.1 EURUSD,M15: == Z-count equals = -nan(ind) 」と生成します。その意味と、コードが返すべき数値をアドバイスしていただけませんか?
コード:
Mql5の皆さん、ヘッジ口座のポジションを決済 する依頼をするのを手伝ってくれませんか?状況:買いポジションを持ち、売り指値で決済する必要がある。質問:選択したポジションを 正確に決済し、新規の売りロック買いを行わないようにするには、どのようにリクエストを書けばよいのでしょうか?コメント付きのコードを書いてくださいありがとうございました。
同じシンボルについて、ある新規注文が別の新規注文の反対方向で閉じること。
boolOrderCloseBy()
intticket,// 決済する注文の番号
intopposite,// 逆順の番号
色arrow_color// 色
);
パラメータ
チケット
[クローズする注文の固有注文番号
対極
[逆順のユニークなシーケンス番号。
矢印の色
[チャート上の終値の矢印の色。このパラメータがない場合、または値がCLR_NONEの場合は、チャートに矢印は表示されません。
戻り値
関数が成功した場合はtrueを、エラーが発生した場合はfalseを返す。エラー 情報を取得するには、GetLastError() を呼び出します。
例
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)とする。
{
OrderCloseBy(order_id,opposite_id;)です。
return(0) です。
}
追伸:このスレッドではMQL4のみを解析しています。
ありがとうございますとしか言いようがない。ルネットの中で、唯一、彼らが助けてくれた場所です。
ここでプリンタは次のように「Stop_Ma_v_5.1 EURUSD,M15: == Z-Account Equals = -nan(ind) 」と生成します。その意味と、コードが返すべき数値をアドバイスしていただけませんか?
コード:
ある未決済注文を、同じ商品の別の未決済注文が反対方向に決済すること。
boolOrderCloseBy()
intticket,// 決済する注文の番号
intopposite,// 逆順の番号
色arrow_color// 色
);
パラメータ
チケット
[クローズされる注文のユニークな連番。
対極
[逆順のユニークなシーケンス番号。
矢印の色
[チャート上の終値の矢印の色。このパラメータがない場合、またはその値がCLR_NONEの場合は、チャートに矢印は表示されません。
戻り値
関数が成功した場合はtrueを、エラーが発生した場合はfalseを返す。エラー 情報を取得するには、GetLastError() を呼び出します。
例
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)とする。
{
OrderCloseBy(order_id,opposite_id;)です。
return(0) です。
}
追伸:このスレッドではMQL4のみを解析しています。
いいえ、mql4やmal5に関する質問はこのスレッドで扱います。アルゴリズムやコードだけでなく、mql4からmql5への移行を促進することが主な目的でしたから。