MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 307 1...300301302303304305306307308309310311312313314...1953 新しいコメント Artyom Trishkin 2017.09.11 12:46 #3061 forexman77: 別のDCで試したところ、問題ないようです。問題は、なぜ電話をかけたかだ。は0.01を出力しますが、ボットには131と表示されるのですか?ロットは関数に渡される際に正規化される必要があります。 forexman77 2017.09.11 12:59 #3062 Artyom Trishkin:ロットは関数に転送される際に正規化する必要があります。実は、私はノーマライゼーションと書きました。自動売買のロット数には上限があります。 ここでCaptain Obviousになる必要はないでしょう。 Artyom Trishkin 2017.09.11 13:01 #3063 forexman77: 実は、私はノーマライゼーションと書きました。自動売買のロット数には何らかの制限があります。 キャプテンオビュアーにならないようにね。まあ、そうやってコミュニケーションしたいのなら、自分で探せばいい。 rabanik 2017.09.11 13:35 #3064 rabanik: ご返信ありがとうございました。これが関数全体です。ポイントは、注文をオープンし、修正によって一定のストップロスとテイクプロフィットの値を追加していることです。注文は出ているがストップロスやテイクプロフィットが設定されていない(赤字の計算関数で、OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)でエラー(( )が出る//オープンオーダー機能、変数:シンボル、オーダータイプ、ロット、オープン価格、TPとSLの計算方法(0 - 価格に設定、1 - オープン価格から計算すべきポイントに設定)、ストップロス、テイクプロフィット)。/Symbol/Pair、オープンオーダーの種類 - 保留、オープン価格、スイッチ = 1、SL B TP - 損切りと利食いの値は一定です!bool SendOrder(string Symb,int Type,double OP,int Mode) { {... カラーCL double Pp = MarketInfo(Symb,MODE_POINT); if (Type==0) CL=Blue; if (Type==1) CL=Red。 if (Type==2 || Type==4) CL=DarkTurquoise; if (Type==3 || Type==5) CL=Orange;//ボリューム検証 if(MarketInfo(Symb,MODE_LOTSTEP)==0.01) DG=2; else DG=1; if (Lot<MarketInfo(Symb,MODE_MINLOT))とする。Lot=MarketInfo(Symb,MODE_MINLOT); if (Lot>MarketInfo(Symb,MODE_MAXLOT))Lot=MarketInfo(Symb,MODE_MAXLOT); if (Lot*MarketInfo(Symb,MODE_MARGINREQUIRED)>AccountEquity()){ PnC(StringConcatenate("取引開始のための資金が足りない",Type," volume: ",DoubleToStr(Lot,DG)),0); を返します。}// 保留注文の確認/* double Slv = MarketInfo(Symb,MODE_STOPLEVEL)*Pp; if (Type>1){。 if (Type==2 && MarketInfo(Symb,MODE_ASK)-OP<Slv) OP=MarketInfo(Symb,MODE_ASK)-Slv; if (Type==3 && OP-MarketInfo(Symb,MODE_BID)<Slv) OP=MarketInfo(Symb,MODE_BID)+Slv; if (Type==4 && OP-MarketInfo(Symb,MODE_ASK)<Slv) OP=MarketInfo(Symb,MODE_ASK)+Slv.OfMarketInfo(Symb,MODE_ASK)+Slv; if (Type==5 && MarketInfo(Symb,MODE_BID)-OP<Slv) OP=MarketInfo(Symb,MODE_BID)-Slv;}*/ RefreshRates()。 int Min_Dist = MarketInfo(Symb,MODE_STOPLEVEL); //ストップロス/ステークプロフィットレベルをpips単位で制限する。最短距離 double Tek_Ask = MarketInfo(Symb,MODE_ASK); //最後に受け取った取引価格。現在のシンボルに対する定義済み変数Askに格納されます。 double Tek_Bid = MarketInfo(Symb,MODE_BID); //最後に受信した入札価格。現在のシンボルに対する定義済み変数Bidに格納される。 double Tek_Point = MarketInfo(Symb,MODE_POINT); //気配値通貨でのポイントサイズ。現在のシンボルに対して定義された変数Pointに格納されます。 int Tek_Digits = MarketInfo(Symb,MODE_DIGITS);// シンボル価格の小数点以下の桁数を指定します。現在のシンボルについては、あらかじめ定義された変数 Digits に格納される。 double Slv = NormalizeDouble(Min_Dist*Tek_Point,Tek_Digits); if (Type>1){。 if (Type==2 && Tek_Ask - OP < Slv) OP = Tek_Ask - Slv; if (Type==3 && OP - Tek_Bid < Slv) OP = Tek_Bid + Slv; if (Type==4 && OP - Tek_Ask < Slv) OP = Tek_Ask + Slv; if (Type==5 && Tek_Bid - OP < Slv) OP = Tek_Bid - Slv;}// チェックストップ if (SL!=0 || TP!=0) {。 if (Mode=0){。 if (MathAbs(OP-SL)<Slv && SL!=0) {. if (Type==0 || Type==2 || Type==4) SL=OP-Slv; else SL=OP+Slv;} if (MathAbs(OP-TP)<Slv && TP!=0) { { { (MathAbs(OP-TP)<Slv && TP! if (Type==0 || Type==2 || Type==4) TP=OP+Slv; else TP=OP-Slv;}}else{ if (SL*Pp<Slv && SL!=0) SL=Slv/Pp; if (TP*Pp<Slv && TP!=0) TP=Slv/Pp;}}//オープニング for(int k=0;k<=TryToTrade;k++){... if (Type==0) OP=MarketInfo(Symb,MODE_ASK); if (Type==1) OP=MarketInfo(Symb,MODE_BID); PnC(StringConcatenate("注文を開始しようとしました、タイプ:",タイプ," 数量:",ロット," 価格:",OP),0).Attempted to open order, type:",Type," volume:",Lot," price:",OP); if (IsTradeAllowed()){ int Ticket=OrderSend(Symb,Type,Lot,NormalizeDouble(OP,MarketInfo(Symb,MODE_DIGITS)),3,0,0,NULL,Tek_Magic,0,CL)となります。}else{ PnC(StringConcatenate("Cannot open order ",k),0); Sleep(3000); continue; } }. if (Ticket >= 0) { PnC(StringConcatenate("Order opened ",Ticket),0); break; }. LastError=Fun_Error(GetLastError()); if (LastError=0){。 RefreshRates(); Sleep(WaitTime); if (k==TryToTrade) return(false); }. if (LastError==1) return(false); if (LastError==2) { Work=false; return(false); }.}// ストップの設定 OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES); if (SL==0 && TP==0) return; if (Mode==1) { if (SL!=0) { if (Type==0 || Type==2 || Type==4) SL=OrderOpenPrice()-SL*Pp; if (Type==1 || Type==3 || Type==5) SL=OrderOpenPrice()+SL*Pp;} if (TP!)=0) { if (Type==0 || Type==2 || Type==4) TP=OrderOpenPrice()+TP*Pp; if (Type==1 || Type==3 || Type==5) TP=OrderOpenPrice()-TP*Pp;}} }。 for(k=0;k<<TryToTrade;k++) { PnC(StringConcatenate("Trying to set stops on order: ",Ticket," s/l: ",SL," t/p: ",TP),0)。 if (IsTradeAllowed()){//TickeT=OrderModify(Ticket,NormalizeDouble(OrderOpenPrice(,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(Symb,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(Symb,MODE_DIGITS)),0,CLR_NONE) を実行。) TickeT=OrderModify(Ticket,NormalizeDouble(OrderOpenPrice(,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(SL,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(Symb,MODE_DIGITS)),0,CLR_NONE)。}else{ PnC(StringConcatenate("Cannot modify order ",k),0); Sleep(3000); continue; } }. if (TickeT == true) { PnC(StringConcatenate("Order modified ",Ticket),0); break; }. LastError=Fun_Error(GetLastError()); if (LastError=0){。 RefreshRates(); Sleep(WaitTime); if (k==TryToTrade) return(false); }. if (LastError==1) return(false); if (LastError==2) { Work=false; return(false); }.} return(true)です。} さて、次の行のエラーはif (Type==0 || Type==2 || Type==4) SL=OrderOpenPrice()-SL*Pp; ですね。OrderOpenPrice() 関数は、同じエラー - 式を評価できませんでした を返します。なんということでしょう!!! rabanik 2017.09.11 14:42 #3065 rabanik: さて、次の行のエラーです。if (Type==0 || Type==2 || Type==4) SL=OrderOpenPrice()-SL*Pp;. OrderOpenPrice() 関数は、同じエラー - 式を評価できませんでした を返します。なんということでしょう!!!すべて解決しました。愚問で申し訳ありません。int型のメイン変数SLを持っています。そして、またタイプダブルで SLに挑戦しています。しかし、システムからは1が返される。ありがとうございます。 6737998 2017.09.11 17:07 #3066 あるEAを、それ以上の演算を実行し続けることなく、ある場所から最初の場所に戻して動作させる方法をどなたかご提案いただけないでしょうか。 danil77783 2017.09.11 18:04 #3067 こんにちは。質問は以下の通りです。EAが売り取引を開始しないのです。見てもらえますか? if (Digits==3||Digits==5) {sl=SL*10*Point;} else if (Digits==4||Digits==2) {sl=SL*Point;} if (OrdersTotal()==0) { if (Close[1]>TD2) OrderSend (Symbol(),OP_BUY,Lot,Ask,10,Ask-sl,0,NULL,Magic,0,clrBlue); else if (Close[1]<TD1) OrderSend (Symbol(),OP_SELL,Lot,Bid,10,Bid+sl,0,NULL,Magic,0,clrRed); } Alexey Viktorov 2017.09.11 18:18 #3068 6737998:あるEAを、それ以上の演算を実行し続けることなく、ある場所から最初の場所に戻して動作させる方法をどなたかご提案いただけないでしょうか。 Оператор возврата return - Операторы - Основы языка - Справочник MQL4 docs.mql4.com Оператор возврата return - Операторы - Основы языка - Справочник MQL4 Alexey Viktorov 2017.09.11 18:19 #3069 danil77783:こんにちは。質問は以下の通りです。EAが売り取引を開始しないのです。見てもらえますか? TD1とは何ですか?どこに値が割り当てられていますか? MosheDayan 2017.09.13 17:26 #3070 友よ、この状況を正しく打開するためには...。このインジケータは、CSVから2本の水平線を 描きます(赤:その日の始まりから終わりまで 青:過去数日間、異なる価格水準でやってきたビーム)。しかし、これらの水準が同じ価値・価格である日もあるのです。この場合、線が重なった時にRay(Blue)が表示され、Redの線はチャート上では見えないが物理的には存在する・・・つまり透明であるようにするには、どうすればよいのでしょうか? これで - Draw_Level("Red", red, DRAW_NONE, STYLE_SOLID,0); は線の描画を停止しますが、レイはその下からも見えません。ありがとうございます。 1...300301302303304305306307308309310311312313314...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
別のDCで試したところ、問題ないようです。問題は、なぜ電話をかけたかだ。
は0.01を出力しますが、ボットには131と表示されるのですか?
ロットは関数に渡される際に正規化される必要があります。
ロットは関数に転送される際に正規化する必要があります。
実は、私はノーマライゼーションと書きました。自動売買のロット数には上限があります。
ここでCaptain Obviousになる必要はないでしょう。実は、私はノーマライゼーションと書きました。自動売買のロット数には何らかの制限があります。
キャプテンオビュアーにならないようにね。まあ、そうやってコミュニケーションしたいのなら、自分で探せばいい。
ご返信ありがとうございました。
これが関数全体です。ポイントは、注文をオープンし、修正によって一定のストップロスとテイクプロフィットの値を追加していることです。
注文は出ているがストップロスやテイクプロフィットが設定されていない(赤字の計算関数で、OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)でエラー(( )が出る
//オープンオーダー機能、変数:シンボル、オーダータイプ、ロット、オープン価格、TPとSLの計算方法(0 - 価格に設定、1 - オープン価格から計算すべきポイントに設定)、ストップロス、テイクプロフィット)。
/Symbol/Pair、オープンオーダーの種類 - 保留、オープン価格、スイッチ = 1、SL B TP - 損切りと利食いの値は一定です!
bool SendOrder(string Symb,int Type,double OP,int Mode) { {...
カラーCL
double Pp = MarketInfo(Symb,MODE_POINT);
if (Type==0) CL=Blue;
if (Type==1) CL=Red。
if (Type==2 || Type==4) CL=DarkTurquoise;
if (Type==3 || Type==5) CL=Orange;
//ボリューム検証
if(MarketInfo(Symb,MODE_LOTSTEP)==0.01) DG=2; else DG=1;
if (Lot<MarketInfo(Symb,MODE_MINLOT))とする。Lot=MarketInfo(Symb,MODE_MINLOT);
if (Lot>MarketInfo(Symb,MODE_MAXLOT))Lot=MarketInfo(Symb,MODE_MAXLOT);
if (Lot*MarketInfo(Symb,MODE_MARGINREQUIRED)>AccountEquity()){
PnC(StringConcatenate("取引開始のための資金が足りない",Type," volume: ",DoubleToStr(Lot,DG)),0);
を返します。
}
// 保留注文の確認
/*
double Slv = MarketInfo(Symb,MODE_STOPLEVEL)*Pp;
if (Type>1){。
if (Type==2 && MarketInfo(Symb,MODE_ASK)-OP<Slv) OP=MarketInfo(Symb,MODE_ASK)-Slv;
if (Type==3 && OP-MarketInfo(Symb,MODE_BID)<Slv) OP=MarketInfo(Symb,MODE_BID)+Slv;
if (Type==4 && OP-MarketInfo(Symb,MODE_ASK)<Slv) OP=MarketInfo(Symb,MODE_ASK)+Slv.OfMarketInfo(Symb,MODE_ASK)+Slv;
if (Type==5 && MarketInfo(Symb,MODE_BID)-OP<Slv) OP=MarketInfo(Symb,MODE_BID)-Slv;
}
*/
RefreshRates()。
int Min_Dist = MarketInfo(Symb,MODE_STOPLEVEL); //ストップロス/ステークプロフィットレベルをpips単位で制限する。最短距離
double Tek_Ask = MarketInfo(Symb,MODE_ASK); //最後に受け取った取引価格。現在のシンボルに対する定義済み変数Askに格納されます。
double Tek_Bid = MarketInfo(Symb,MODE_BID); //最後に受信した入札価格。現在のシンボルに対する定義済み変数Bidに格納される。
double Tek_Point = MarketInfo(Symb,MODE_POINT); //気配値通貨でのポイントサイズ。現在のシンボルに対して定義された変数Pointに格納されます。
int Tek_Digits = MarketInfo(Symb,MODE_DIGITS);// シンボル価格の小数点以下の桁数を指定します。現在のシンボルについては、あらかじめ定義された変数 Digits に格納される。
double Slv = NormalizeDouble(Min_Dist*Tek_Point,Tek_Digits);
if (Type>1){。
if (Type==2 && Tek_Ask - OP < Slv) OP = Tek_Ask - Slv;
if (Type==3 && OP - Tek_Bid < Slv) OP = Tek_Bid + Slv;
if (Type==4 && OP - Tek_Ask < Slv) OP = Tek_Ask + Slv;
if (Type==5 && Tek_Bid - OP < Slv) OP = Tek_Bid - Slv;
}
// チェックストップ
if (SL!=0 || TP!=0) {。
if (Mode=0){。
if (MathAbs(OP-SL)<Slv && SL!=0) {.
if (Type==0 || Type==2 || Type==4) SL=OP-Slv; else SL=OP+Slv;
}
if (MathAbs(OP-TP)<Slv && TP!=0) { { { (MathAbs(OP-TP)<Slv && TP!
if (Type==0 || Type==2 || Type==4) TP=OP+Slv; else TP=OP-Slv;
}
}else{
if (SL*Pp<Slv && SL!=0) SL=Slv/Pp;
if (TP*Pp<Slv && TP!=0) TP=Slv/Pp;
}
}
//オープニング
for(int k=0;k<=TryToTrade;k++){...
if (Type==0) OP=MarketInfo(Symb,MODE_ASK);
if (Type==1) OP=MarketInfo(Symb,MODE_BID);
PnC(StringConcatenate("注文を開始しようとしました、タイプ:",タイプ," 数量:",ロット," 価格:",OP),0).Attempted to open order, type:",Type," volume:",Lot," price:",OP);
if (IsTradeAllowed()){
int Ticket=OrderSend(Symb,Type,Lot,NormalizeDouble(OP,MarketInfo(Symb,MODE_DIGITS)),3,0,0,NULL,Tek_Magic,0,CL)となります。
}else{ PnC(StringConcatenate("Cannot open order ",k),0); Sleep(3000); continue; } }.
if (Ticket >= 0) { PnC(StringConcatenate("Order opened ",Ticket),0); break; }.
LastError=Fun_Error(GetLastError());
if (LastError=0){。
RefreshRates(); Sleep(WaitTime);
if (k==TryToTrade) return(false); }.
if (LastError==1) return(false);
if (LastError==2) { Work=false; return(false); }.
}
// ストップの設定
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
if (SL==0 && TP==0) return;
if (Mode==1) {
if (SL!=0) {
if (Type==0 || Type==2 || Type==4) SL=OrderOpenPrice()-SL*Pp;
if (Type==1 || Type==3 || Type==5) SL=OrderOpenPrice()+SL*Pp;
}
if (TP!)=0) {
if (Type==0 || Type==2 || Type==4) TP=OrderOpenPrice()+TP*Pp;
if (Type==1 || Type==3 || Type==5) TP=OrderOpenPrice()-TP*Pp;
}
} }。
for(k=0;k<<TryToTrade;k++) {
PnC(StringConcatenate("Trying to set stops on order: ",Ticket," s/l: ",SL," t/p: ",TP),0)。
if (IsTradeAllowed()){
//TickeT=OrderModify(Ticket,NormalizeDouble(OrderOpenPrice(,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(Symb,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(Symb,MODE_DIGITS)),0,CLR_NONE) を実行。)
TickeT=OrderModify(Ticket,NormalizeDouble(OrderOpenPrice(,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(SL,MarketInfo(Symb,MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(Symb,MODE_DIGITS)),0,CLR_NONE)。
}else{ PnC(StringConcatenate("Cannot modify order ",k),0); Sleep(3000); continue; } }.
if (TickeT == true) { PnC(StringConcatenate("Order modified ",Ticket),0); break; }.
LastError=Fun_Error(GetLastError());
if (LastError=0){。
RefreshRates(); Sleep(WaitTime);
if (k==TryToTrade) return(false); }.
if (LastError==1) return(false);
if (LastError==2) { Work=false; return(false); }.
}
return(true)です。
}
さて、次の行のエラーです。if (Type==0 || Type==2 || Type==4) SL=OrderOpenPrice()-SL*Pp;. OrderOpenPrice() 関数は、同じエラー - 式を評価できませんでした を返します。なんということでしょう!!!
すべて解決しました。愚問で申し訳ありません。int型のメイン変数SLを持っています。
そして、またタイプダブルで SLに挑戦しています。しかし、システムからは1が返される。
ありがとうございます。
あるEAを、それ以上の演算を実行し続けることなく、ある場所から最初の場所に戻して動作させる方法をどなたかご提案いただけないでしょうか。
こんにちは。質問は以下の通りです。EAが売り取引を開始しないのです。見てもらえますか?
あるEAを、それ以上の演算を実行し続けることなく、ある場所から最初の場所に戻して動作させる方法をどなたかご提案いただけないでしょうか。
こんにちは。質問は以下の通りです。EAが売り取引を開始しないのです。見てもらえますか?
友よ、この状況を正しく打開するためには...。このインジケータは、CSVから2本の水平線を 描きます(赤:その日の始まりから終わりまで 青:過去数日間、異なる価格水準でやってきたビーム)。しかし、これらの水準が同じ価値・価格である日もあるのです。この場合、線が重なった時にRay(Blue)が表示され、Redの線はチャート上では見えないが物理的には存在する・・・つまり透明であるようにするには、どうすればよいのでしょうか?
これで - Draw_Level("Red", red, DRAW_NONE, STYLE_SOLID,0); は線の描画を停止しますが、レイはその下からも見えません。ありがとうございます。