MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 402 1...395396397398399400401402403404405406407408409...1953 新しいコメント Roman Sharanov 2017.12.25 10:08 #4011 STARIJ: 以下、これです。グラフィカルオブジェクトのマウスクリックイベントチャートイベント_オブジェクト_クリックX座標Y座標イベントが発生したグラフィカルオブジェクトの名前ううう、全部わかったような気がする) ありがとうございました。 potom 2017.12.25 16:04 #4012 結果「r」をバッファにリンクしてグラフに表示する方法がわかりませんので、アドバイスをお願いします。教科書の例題が理解できない、人に聞いたことがあるrの値をバッファに書き込むと、グラフに表示される」「通常はforループでバッファに書き込む」と書かれています。"が、それじゃ何もわからない!?ある結果は、「r」の文字だけで、どこにもないんです。そしてもうひとつ例えば、"r "という結果をどのように滑らかにするか。 ご清聴ありがとうございました。 ZZuretc 2017.12.25 16:13 #4013 エラーは何ですか?テスターで実行すると、保留中の注文が削除 されるときとされないときがある。なぜ?動作原理は、TPで買い注文が決済されると、BuyLimitが解除される、というものです。アドバイスをお願いします////+------------------DELETE BUYLIM-----------------------------------+ if((SchBuyLimLots(Symbol())-SchBuyLots(Symbol()))!=0) // лот байлимит НЕ лот бая { for(int i=0;i<OrdersTotal();i++) { datetime T_op=0,T_lim=0,buys=0; if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) break; if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=SMB_) continue; if(OrderType()==OP_BUY) if(OrderCloseTime()>buys) buys+=OrderCloseTime(); buys= OrderCloseTime(); T_op=buys; // время закрытия бая if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=SMB_) continue; { if(OrderType()==OP_BUYLIMIT) { T_lim=OrderOpenTime(); // время закрытия селл ticket=OrderTicket(); if(T_lim<=T_op) // разность res=OrderDelete( ticket,clrMagenta); if(res<1) { Print(GetLastError()); } } } } } Vladimir Pastushak 2017.12.25 18:37 #4014 ZZuretc:エラーは何ですか?テスターで実行すると、保留中の注文が削除 されるときとされないときがある。なぜ?動作原理は、TPで買い注文が決済されると、BuyLimitが解除される、というものです。アドバイスお願いします。オーダートータル() != オーダーヒストリートータル() mila.com 2017.12.27 04:23 #4015 Alexey Viktorov: 私自身はミラクルを見たことがありません。ありがとうございます。 Roman Sharanov 2017.12.27 16:20 #4016 現在のATRの最大 値、最小値の求め 方を教えてください。 ファイル: q6a0hh.PNG 12 kb Skander 2017.12.27 17:33 #4017 皆さん、こんにちは。ストキャスティックをベースにした簡単なExpert Advisorを作ったのですが(上のピークで売り、下のピークで買い)、コンパイラがその場でエラーになります。どなたか、このエラーの原因や意味を教えていただけませんか?最初、どこかに括弧を付け忘れたのかと思った。でも、いや、何度か確認しましたが、すべて問題ないようです。よろしくお願いします。以下は、コンパイラが生成するエラーです: ')'- すべての制御パスが値を返すわけではない Stohastic-Signals-33.mq4 177 3')'- すべての制御パスが値を返すわけではない Stohastic-Signals-33.mq4 210 3Expert Advisor 本体と mq4 ファイルを添付します。このファイルにExpert Advisorを添付する方法を教えてください(エディタに色文字で表示されます)//+------------------------------------------------------------------+//| Stohastic-Signals-33.mq4//| Copyright 2017, MetaQuotes Software Corp.//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2017, MetaQuotes Software Corp."#プロパティリンク "https://www.mql5.com"#property version "1.00"#プロパティの厳密さ//+------------------------------------------------------------------+bool New_Bar=false; // 新しいバーのフラグです。extern double H_line=80; // ストキャスティクスの上値(買われ過ぎ)ラインextern double L_line=20; // ストキャスティクスの下限(売られすぎ)ラインextern inttern Slippage=2; // スリッページextern int SL; // 設定されるオーダーのSLextern int TP; // 設定されるオーダーの TPextern double Lts; //設定されるオーダーのロットサイズbool B_Flag=false; // BUY用シグナルフラグS_Flag=false, // 売りのシグナルを出すためのフラグORD_Buy=false, // 買いポジションのフラグを立てるORD_Sell=false; // フラグを立てて売りのポジションを開くbool Work=true; // エキスパートの作業を許可するフラグ。string Symb; // 金融商品の名称int Crit_Error=11111111; // クリティカルエラーの発生数//+------------------------------------------------------------------+//| エキスパートティック機能//+------------------------------------------------------------------+void OnTick(){イントTotal, // ウィンドウ内の注文数Tip=-1, // 注文種別選択 (B=0,S=1)チケット; // 注文番号二重M_1, M_2, M_3, // 1, 2, 3小節のMAIN値Lot; // 選択された注文のロット数bool Ans_Close; // 注文のクローズが成功したかどうかのフラグ(1クローズ、0クローズでない)。bool Ans_Open; // 注文が正常にオープンされたかどうかのフラグ (1-closed、0-not opened)//--------------------------------------------------------------- 1 --// 重大なエラーがないか確認するif(Work==false) // クリティカルエラー{Alert("重大なエラーです。 Expert Advisorが動作していません。")return; // start() を終了する。}//--------------------------------------------------------------- 2 --// 新しいバーFun_New_Bar(); // 関数の呼び出しif (New_Bar==false) // バーが新しいものでない場合return; // ...そして終了//------------------------------------------------------------- 3 --// オーダーカウントSymb=Symbol(); // 金融商品の名前。Total=0; // 注文数for(int i=1; i<=OrdersTotal(); i++) // オーダーループ{if(OrderSelect(i-1,SELECT_BY_POS)==true) // 以下の場合。{ // オーダー解析。if (OrderSymbol()!=Symb)continue; // 当社の金融商品ではありません。Ticket=OrderTicket(); // 注文番号が選択されました。Tip =OrderType(); // 選択されたオーダーのタイプ。Lot=OrderLots(); // ロット数}さもなくば{Alert("OrderSelect() returned an error - ",GetLastError()); // 注文を選択できなかった場合、.return; // 終了}}//------------------------------------------------------------- 4 --// 取引基準 状況分析M_1=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,1);// 1バーM_2=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,2);// 2本バーM_3=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,3);// 3本バーの場合//------------------------------------------------------------- 5 --if(M_2>=H_line) // ストハスティックが買われすぎのラインを超えたら{if(M_3 <= M_2 && M_2 > M_1) // ストハスティックが買われ過ぎラインを越えた{...{if(S_Flag==true) // If(売りポジションがオープンしたら、...)return; // start() を終了する。// 売りポジションがオープンされていない場合、 ...S_Flag=true; // 売りのシグナルが出たことを示すフラグを設定する。B_Flag=false; // 買いシグナルが出ていないことを確認する。if(ORD_Buy==true) // 買いの注文が出されている場合。{if(Tip!=0) // チェック:注文のTYPEがオープンオーダーと一致しない...{Work=false; //The Expert Advisorは動作しません。Alert("The order TYPE does not corresponding the open order FLAG. Exit start."); // 一致しない場合、Expert Advisorは動作を停止します。return; // スタートから終了する}Ans_Close=Close_Order(Ticket,Lot,Slippage,Tip); // 開いた買い注文を閉じる。if(Ans_Close==false) // クローズに失敗した場合...{Alert("注文の決済に失敗しました。Expert Advisorの動作が停止しました。)return; // 終了}}Ans_Open=Open_Order(Symb,Lts,SL,TP,1); // OPEN POINTSif(Ans_Open==false) // 売りのオープンに失敗した場合{Alert("Failed to open order.Expert Advisorの動作が停止しました。)return; // スタートから終了する} // Sellが正常に開かれた場合ORD_Sell=true; // ショートポジションがオープンされたことを示すフラグを立てる。ORD_Buy=false; // LONGポジションが無くなったとフラグを立てる。}return; // 終了スタート}//------------------------------------------------------------------------ 6 --if(M_2<=L_line) // ストハスティックが売られすぎのラインを越えた場合{if(M_3 >= M_2 && M_2 < M_1) // ボトムピーク出現(買い呼出し){if(B_Flag==true) // 買いポジションが開かれた場合return; // start() を終了する。// 買いのポジションが開設されていない場合B_Flag=true; // 買いポジションがオープンした場合、フラグをオンにします。S_Flag=false; // 売りシグナルがないことを確認する。if(ORD_Sell==true) // 未決済の売り注文がある場合、...{if(Tip!=1) // チェック:注文のTYPEがオープンオーダーと一致しない...{Work=false; //The Expert Advisorは動作しません。Alert("The order TYPE does not corresponding the open order's FLAG. Exit start."); // 一致しない場合、Expert Advisorは動作を停止します。return; // スタートから終了する}Ans_Close=Close_Order(Ticket,Lot,Slippage,Tip); // 開いた売り注文を閉じるif(Ans_Close==false) // クローズに失敗した場合{Alert("注文の決済に失敗しました。Expert Advisorの動作が停止しました。)return; // 終了}}Ans_Open=Open_Order(Symb,Lts,SL,TP,0); // OPEN LONG POSITIONif(Ans_Open==false) // オープンに失敗した場合 Buy{Alert("Failed to open order.Expert Advisorの動作が停止しました。)return; // スタートから終了する} // 買い注文が正常に開始された場合ORD_Sell=false; // ショートポジションがないことを確認する。ORD_Buy=true; // LONGポジションをフラグオープンする。}return; // 終了スタート}}//+------------------------------------------------------------------ 7 --void Fun_New_Bar() // 検出フィー.{ // ... new bar.static datetime New_Time=0; // 現在のバーの時間New_Bar=false; // 新しいバーを表示しない。if(New_Time!=Time[0]) // 時刻を比較する。{New_Time=Time[0]; // 今の時刻はNew_Bar=true; // 新しいバーが捕まる}}//--------------------------------------------------------------- 8 --bool Close_Order(int F_Ticket,double F_Lot,int F_Slippage,int F_Tip) // オーダー終了のフィー{double Close_Price=0; // 注文の終値while(真){RefreshRates(); // データを更新するif(F_Tip==0) // 注文が「買い」の場合、・・・。Close_Price=Bid; // 終値 BidClose_Price=Ask; // 売り注文の場合、終値はAskになります。bool Ans_Close=OrderClose(F_Ticket,F_Lot,Close_Price,F_Slippage); // 買いと売りのクローズを行う。if (Ans_Close==true) // うまくいきました :)return(true); // close 関数を終了します。Crit_Error=GetLastError(); // エラー番号を修正する。if (Fun_Error(Crit_Error)==1) // エラー処理continue; // Retry; // 再試行する。return(false); // 関数を終了します。}}//--------------------------------------------------------------- 9 --//受注開始bool Open_Order(string F_Symb、double F_Lts、int F_SL、int F_TP、int F_Tip){double Open_Price; //オープンプライスstring Tip_Deal; //取引の方向(買いか売りか)。double f_sl; // ストップロス注文double f_tp; // テイクプロフィットint Ticket; // 新規注文のチケットwhile(true) // オーダークローズループ。{RefreshRates(); // データを更新するif(F_Tip==1) // 売りを開く...{Open_Price=Bid。Tip_Deal="OP_SELL"。f_sl=NormalizeDouble(Bid+F_SL*Point,Digits)となります。f_tp=NormalizeDouble(Bid-F_TP*Point,Digits)となります。}//BUYを開く場合は...Open_Price=Ask;Tip_Deal="OP_BUY"。f_sl=NormalizeDouble(Bid+F_SL*Point,Digits)となります。f_tp=NormalizeDouble(Bid-F_TP*Point,Digits)となります。Ticket=OrderSend(F_Symb,Tip_Deal,F_Lts,Open_Price,2,f_sl,f_tp);//open ORDERif (Ticket > 0) // うまくいった :)return(true); //関数を終了します。Crit_Error=GetLastError(); // コミットエラー番号if (Fun_Error(Crit_Error)==1) // エラー処理continue; // Retry; // 再試行する。return(false); // 関数を終了します。}}//--------------------------------------------------------------- 10 --int Fun_Error(int Error) /関数のエラー処理{switch(エラー){// 乗り越えられないエラー。case 4: Alert("Trade server is busy. Try again...");Sleep(3000); // 簡単な解決方法です。return(1); // 関数を終了します。case 135:Alert("Price changed. Try again...");RefreshRates(); // データをリフレッシュします。return(1); // 関数を終了します。case 136:Alert("No price. Waiting for new tick...");while(RefreshRates()==false) // 新しいティックを表示する。Sleep(1); // ループ内の遅延時間return(1); // 関数を終了します。case 137:Alert("Broker is busy. Try again...");Sleep(3000); // 簡単な解決方法です。return(1); // 関数を終了します。case 146:Alert("The trading subsystem is busy. Try again...");Sleep(500); // 単純な判定return(1); // 関数を終了します。// クリティカルエラーcase 2: Alert("一般的なエラー;")return(0); // 関数を終了します.case 5: Alert("Older version of the terminal.");Work=false; // もう動作しないreturn(0); // 関数を終了します。case 64: Alert("アカウントがブロックされました。");Work=false; // もう動作しないreturn(0); // 関数を終了します。case 133:Alert("取引禁止。");return(0); // 関数を終了します。case 134:Alert("Not enough money to execute the transaction")と表示されます。return(0); // 関数を終了します。default: Alert("An error has occurred ",Error); // その他のオプションreturn(0); // 関数を終了します。}}//-------------------------------------------------------------- 11 -- ファイル: Stohastic-hg8zb4w-33.mq4 28 kb Any questions from newcomers どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - [ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you Konstantin Erin 2017.12.27 18:15 #4018 RomanRott: 現在のATPの最大 値、最小値の求め 方を教えてください。 double max=-10000, min=+10000, ATR; for(int n=0; n<WindowFirstVisibleBar();n++) { ATR=iATR(NULL, 0, 14, n); if(max<ATR)max=ATR; if(min>ATR)min=ATR; } Alert("min = ", DoubleToStr(min,4), " max = ", DoubleToString(max,4)); その他の指標についても同様に Konstantin Erin 2017.12.27 18:25 #4019 Skander: こんにちは。Stochstic(上のピークが売り、下のピークが買い)に基づいた簡単なエキスパートを作りましたが、コンパイラはフラットスポットでエラーを出します。 どなたか、このエラーの原因や意味を教えていただけませんか?最初、どこかに括弧を付け忘れたのかと思った。 でも、いや、何度か確認しましたが、すべて問題ないようです。よろしくお願いします。 以下は、コンパイラが生成するエラーです: ')'- すべての制御パスが値を返すわけではない Stohastic-Signals-33.mq4 177 3')'- すべての制御パスが値を返すわけではない Stohastic-Signals-33.mq4 210 3//--------------------------------------------------------------- 8 -- bool Close_Order(int F_Ticket,double F_Lot,int F_Slippage,int F_Tip) // オーダー終了のフィー{ double Close_Price=0; // 注文の終値 while(真){ RefreshRates()。// データを更新する if(F_Tip==0)// If(買い注文, ... Close_Price=Bid; // 終値 Bid Close_Price=Ask。// 売り注文の場合、終値はAsk bool Ans_Close=OrderClose(F_Ticket,F_Lot,Close_Price,F_Slippage); // 買いと売りのクローズを行う。 if (Ans_Close==true)// うまくいった :) return(true)です。// クローズ機能から抜ける Crit_Error=GetLastError()です。// コミットエラー番号 if (Fun_Error(Crit_Error)==1) // エラー処理 を続ける。// 再試行 return(false)です。// 関数を終了する}} MetaEditorのCompileボタンを押し、エラーメッセージを 読みます - 行番号と位置の番号があります//--------------------------------------------------------------- 8 -- bool Close_Order(int F_Ticket,double F_Lot,int F_Slippage,int F_Tip) // Ф-ия закрытия ордера { double Close_Price=0; // Цена закрытия ордера while(true) { .................................... continue; // Повторная попытка return(false); // Выход из функции } return false; // Компилятор хочет return в конце функции }SRCボタンでプログラムコードを 挿入 - ローカルの読者はこの方法が好きです!!そしてあなたの長い放浪はBRRRRです。 ボタンは、メッセージテキストにソースコードを挿入するためのものです。クリックすると、空のウィンドウが表示されますので、そこにコードを貼り付けて、「挿入」ボタンをクリックしてください。 Skander 2017.12.28 07:24 #4020 STARIJ:MetaEditorのCompileボタンを押し、エラーメッセージを 読みます - 行番号と位置の番号がありますSRCボタンでプログラムコードを 挿入 - ローカルリーダーはその方が好きです!!そしてあなたの長い放浪はBRRRRRです。メッセージテキストにソースコードを挿入するためのボタンです。クリックすると、空のウィンドウが表示されますので、そこにコードを貼り付けて、挿入 ボタンをクリックしてください。ありがとうございます。 1...395396397398399400401402403404405406407408409...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
グラフィカルオブジェクトのマウスクリックイベント
チャートイベント_オブジェクト_クリック
X座標
Y座標
イベントが発生したグラフィカルオブジェクトの名前
ううう、全部わかったような気がする)
ありがとうございました。
結果「r」をバッファにリンクしてグラフに表示する方法がわかりませんので、アドバイスをお願いします。
教科書の例題が理解できない、人に聞いたことがある
rの値をバッファに書き込むと、グラフに表示される」「通常はforループでバッファに書き込む」と書かれています。"
が、それじゃ何もわからない!?
ある結果は、「r」の文字だけで、どこにもないんです。
そしてもうひとつ
例えば、"r "という結果をどのように滑らかにするか。
ご清聴ありがとうございました。エラーは何ですか?テスターで実行すると、保留中の注文が削除 されるときとされないときがある。なぜ?動作原理は、TPで買い注文が決済されると、BuyLimitが解除される、というものです。アドバイスをお願いします
エラーは何ですか?テスターで実行すると、保留中の注文が削除 されるときとされないときがある。なぜ?動作原理は、TPで買い注文が決済されると、BuyLimitが解除される、というものです。アドバイスお願いします。
オーダートータル() != オーダーヒストリートータル()
ありがとうございます。
皆さん、こんにちは。
ストキャスティックをベースにした簡単なExpert Advisorを作ったのですが(上のピークで売り、下のピークで買い)、コンパイラがその場でエラーになります。
どなたか、このエラーの原因や意味を教えていただけませんか?最初、どこかに括弧を付け忘れたのかと思った。
でも、いや、何度か確認しましたが、すべて問題ないようです。よろしくお願いします。
以下は、コンパイラが生成するエラーです: ')'- すべての制御パスが値を返すわけではない Stohastic-Signals-33.mq4 177 3
Expert Advisor 本体と mq4 ファイルを添付します。
このファイルにExpert Advisorを添付する方法を教えてください(エディタに色文字で表示されます)
//+------------------------------------------------------------------+
//| Stohastic-Signals-33.mq4
//| Copyright 2017, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#プロパティリンク "https://www.mql5.com"
#property version "1.00"
#プロパティの厳密さ
//+------------------------------------------------------------------+
bool New_Bar=false; // 新しいバーのフラグです。
extern double H_line=80; // ストキャスティクスの上値(買われ過ぎ)ライン
extern double L_line=20; // ストキャスティクスの下限(売られすぎ)ライン
extern inttern Slippage=2; // スリッページ
extern int SL; // 設定されるオーダーのSL
extern int TP; // 設定されるオーダーの TP
extern double Lts; //設定されるオーダーのロットサイズ
bool B_Flag=false; // BUY用シグナルフラグ
S_Flag=false, // 売りのシグナルを出すためのフラグ
ORD_Buy=false, // 買いポジションのフラグを立てる
ORD_Sell=false; // フラグを立てて売りのポジションを開く
bool Work=true; // エキスパートの作業を許可するフラグ。
string Symb; // 金融商品の名称
int Crit_Error=11111111; // クリティカルエラーの発生数
//+------------------------------------------------------------------+
//| エキスパートティック機能
//+------------------------------------------------------------------+
void OnTick()
{
イント
Total, // ウィンドウ内の注文数
Tip=-1, // 注文種別選択 (B=0,S=1)
チケット; // 注文番号
二重
M_1, M_2, M_3, // 1, 2, 3小節のMAIN値
Lot; // 選択された注文のロット数
bool Ans_Close; // 注文のクローズが成功したかどうかのフラグ(1クローズ、0クローズでない)。
bool Ans_Open; // 注文が正常にオープンされたかどうかのフラグ (1-closed、0-not opened)
//--------------------------------------------------------------- 1 --
// 重大なエラーがないか確認する
if(Work==false) // クリティカルエラー
{
Alert("重大なエラーです。 Expert Advisorが動作していません。")
return; // start() を終了する。
}
//--------------------------------------------------------------- 2 --
// 新しいバー
Fun_New_Bar(); // 関数の呼び出し
if (New_Bar==false) // バーが新しいものでない場合
return; // ...そして終了
//------------------------------------------------------------- 3 --
// オーダーカウント
Symb=Symbol(); // 金融商品の名前。
Total=0; // 注文数
for(int i=1; i<=OrdersTotal(); i++) // オーダーループ
{
if(OrderSelect(i-1,SELECT_BY_POS)==true) // 以下の場合。
{ // オーダー解析。
if (OrderSymbol()!=Symb)continue; // 当社の金融商品ではありません。
Ticket=OrderTicket(); // 注文番号が選択されました。
Tip =OrderType(); // 選択されたオーダーのタイプ。
Lot=OrderLots(); // ロット数
}
さもなくば
{
Alert("OrderSelect() returned an error - ",GetLastError()); // 注文を選択できなかった場合、.
return; // 終了
}
}
//------------------------------------------------------------- 4 --
// 取引基準 状況分析
M_1=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,1);// 1バー
M_2=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,2);// 2本バー
M_3=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,3);// 3本バーの場合
//------------------------------------------------------------- 5 --
if(M_2>=H_line) // ストハスティックが買われすぎのラインを超えたら
{
if(M_3 <= M_2 && M_2 > M_1) // ストハスティックが買われ過ぎラインを越えた{...
{
if(S_Flag==true) // If(売りポジションがオープンしたら、...)
return; // start() を終了する。
// 売りポジションがオープンされていない場合、 ...
S_Flag=true; // 売りのシグナルが出たことを示すフラグを設定する。
B_Flag=false; // 買いシグナルが出ていないことを確認する。
if(ORD_Buy==true) // 買いの注文が出されている場合。
{
if(Tip!=0) // チェック:注文のTYPEがオープンオーダーと一致しない...
{
Work=false; //The Expert Advisorは動作しません。
Alert("The order TYPE does not corresponding the open order FLAG. Exit start."); // 一致しない場合、Expert Advisorは動作を停止します。
return; // スタートから終了する
}
Ans_Close=Close_Order(Ticket,Lot,Slippage,Tip); // 開いた買い注文を閉じる。
if(Ans_Close==false) // クローズに失敗した場合...
{
Alert("注文の決済に失敗しました。Expert Advisorの動作が停止しました。)
return; // 終了
}
}
Ans_Open=Open_Order(Symb,Lts,SL,TP,1); // OPEN POINTS
if(Ans_Open==false) // 売りのオープンに失敗した場合
{
Alert("Failed to open order.Expert Advisorの動作が停止しました。)
return; // スタートから終了する
} // Sellが正常に開かれた場合
ORD_Sell=true; // ショートポジションがオープンされたことを示すフラグを立てる。
ORD_Buy=false; // LONGポジションが無くなったとフラグを立てる。
}
return; // 終了スタート
}
//------------------------------------------------------------------------ 6 --
if(M_2<=L_line) // ストハスティックが売られすぎのラインを越えた場合
{
if(M_3 >= M_2 && M_2 < M_1) // ボトムピーク出現(買い呼出し)
{
if(B_Flag==true) // 買いポジションが開かれた場合
return; // start() を終了する。
// 買いのポジションが開設されていない場合
B_Flag=true; // 買いポジションがオープンした場合、フラグをオンにします。
S_Flag=false; // 売りシグナルがないことを確認する。
if(ORD_Sell==true) // 未決済の売り注文がある場合、...
{
if(Tip!=1) // チェック:注文のTYPEがオープンオーダーと一致しない...
{
Work=false; //The Expert Advisorは動作しません。
Alert("The order TYPE does not corresponding the open order's FLAG. Exit start."); // 一致しない場合、Expert Advisorは動作を停止します。
return; // スタートから終了する
}
Ans_Close=Close_Order(Ticket,Lot,Slippage,Tip); // 開いた売り注文を閉じる
if(Ans_Close==false) // クローズに失敗した場合
{
Alert("注文の決済に失敗しました。Expert Advisorの動作が停止しました。)
return; // 終了
}
}
Ans_Open=Open_Order(Symb,Lts,SL,TP,0); // OPEN LONG POSITION
if(Ans_Open==false) // オープンに失敗した場合 Buy
{
Alert("Failed to open order.Expert Advisorの動作が停止しました。)
return; // スタートから終了する
} // 買い注文が正常に開始された場合
ORD_Sell=false; // ショートポジションがないことを確認する。
ORD_Buy=true; // LONGポジションをフラグオープンする。
}
return; // 終了スタート
}
}
//+------------------------------------------------------------------ 7 --
void Fun_New_Bar() // 検出フィー.
{ // ... new bar.
static datetime New_Time=0; // 現在のバーの時間
New_Bar=false; // 新しいバーを表示しない。
if(New_Time!=Time[0]) // 時刻を比較する。
{
New_Time=Time[0]; // 今の時刻は
New_Bar=true; // 新しいバーが捕まる
}
}
//--------------------------------------------------------------- 8 --
bool Close_Order(int F_Ticket,double F_Lot,int F_Slippage,int F_Tip) // オーダー終了のフィー
{
double Close_Price=0; // 注文の終値
while(真)
{
RefreshRates(); // データを更新する
if(F_Tip==0) // 注文が「買い」の場合、・・・。
Close_Price=Bid; // 終値 Bid
Close_Price=Ask; // 売り注文の場合、終値はAskになります。
bool Ans_Close=OrderClose(F_Ticket,F_Lot,Close_Price,F_Slippage); // 買いと売りのクローズを行う。
if (Ans_Close==true) // うまくいきました :)
return(true); // close 関数を終了します。
Crit_Error=GetLastError(); // エラー番号を修正する。
if (Fun_Error(Crit_Error)==1) // エラー処理
continue; // Retry; // 再試行する。
return(false); // 関数を終了します。
}
}
//--------------------------------------------------------------- 9 --
//受注開始
bool Open_Order(string F_Symb、double F_Lts、int F_SL、int F_TP、int F_Tip)
{
double Open_Price; //オープンプライス
string Tip_Deal; //取引の方向(買いか売りか)。
double f_sl; // ストップロス注文
double f_tp; // テイクプロフィット
int Ticket; // 新規注文のチケット
while(true) // オーダークローズループ。
{
RefreshRates(); // データを更新する
if(F_Tip==1) // 売りを開く...
{
Open_Price=Bid。
Tip_Deal="OP_SELL"。
f_sl=NormalizeDouble(Bid+F_SL*Point,Digits)となります。
f_tp=NormalizeDouble(Bid-F_TP*Point,Digits)となります。
}
//BUYを開く場合は...
Open_Price=Ask;
Tip_Deal="OP_BUY"。
f_sl=NormalizeDouble(Bid+F_SL*Point,Digits)となります。
f_tp=NormalizeDouble(Bid-F_TP*Point,Digits)となります。
Ticket=OrderSend(F_Symb,Tip_Deal,F_Lts,Open_Price,2,f_sl,f_tp);//open ORDER
if (Ticket > 0) // うまくいった :)
return(true); //関数を終了します。
Crit_Error=GetLastError(); // コミットエラー番号
if (Fun_Error(Crit_Error)==1) // エラー処理
continue; // Retry; // 再試行する。
return(false); // 関数を終了します。
}
}
//--------------------------------------------------------------- 10 --
int Fun_Error(int Error) /関数のエラー処理
{
switch(エラー)
{// 乗り越えられないエラー。
case 4: Alert("Trade server is busy. Try again...");
Sleep(3000); // 簡単な解決方法です。
return(1); // 関数を終了します。
case 135:Alert("Price changed. Try again...");
RefreshRates(); // データをリフレッシュします。
return(1); // 関数を終了します。
case 136:Alert("No price. Waiting for new tick...");
while(RefreshRates()==false) // 新しいティックを表示する。
Sleep(1); // ループ内の遅延時間
return(1); // 関数を終了します。
case 137:Alert("Broker is busy. Try again...");
Sleep(3000); // 簡単な解決方法です。
return(1); // 関数を終了します。
case 146:Alert("The trading subsystem is busy. Try again...");
Sleep(500); // 単純な判定
return(1); // 関数を終了します。
// クリティカルエラー
case 2: Alert("一般的なエラー;")
return(0); // 関数を終了します.
case 5: Alert("Older version of the terminal.");
Work=false; // もう動作しない
return(0); // 関数を終了します。
case 64: Alert("アカウントがブロックされました。");
Work=false; // もう動作しない
return(0); // 関数を終了します。
case 133:Alert("取引禁止。");
return(0); // 関数を終了します。
case 134:Alert("Not enough money to execute the transaction")と表示されます。
return(0); // 関数を終了します。
default: Alert("An error has occurred ",Error); // その他のオプション
return(0); // 関数を終了します。
}
}
//-------------------------------------------------------------- 11 --
どなたか、このエラーの原因や意味を教えていただけませんか?最初、どこかに括弧を付け忘れたのかと思った。
でも、いや、何度か確認しましたが、すべて問題ないようです。よろしくお願いします。
以下は、コンパイラが生成するエラーです: ')'- すべての制御パスが値を返すわけではない Stohastic-Signals-33.mq4 177 3
')'- すべての制御パスが値を返すわけではない Stohastic-Signals-33.mq4 210 3
//--------------------------------------------------------------- 8 --
bool Close_Order(int F_Ticket,double F_Lot,int F_Slippage,int F_Tip) // オーダー終了のフィー
{
double Close_Price=0; // 注文の終値
while(真)
{
RefreshRates()。// データを更新する
if(F_Tip==0)// If(買い注文, ...
Close_Price=Bid; // 終値 Bid
Close_Price=Ask。// 売り注文の場合、終値はAsk
bool Ans_Close=OrderClose(F_Ticket,F_Lot,Close_Price,F_Slippage); // 買いと売りのクローズを行う。
if (Ans_Close==true)// うまくいった :)
return(true)です。// クローズ機能から抜ける
Crit_Error=GetLastError()です。// コミットエラー番号
if (Fun_Error(Crit_Error)==1) // エラー処理
を続ける。// 再試行
return(false)です。// 関数を終了する
}
}
MetaEditorのCompileボタンを押し、エラーメッセージを 読みます - 行番号と位置の番号があります
SRCボタンでプログラムコードを 挿入 - ローカルの読者はこの方法が好きです!!そしてあなたの長い放浪はBRRRRです。
MetaEditorのCompileボタンを押し、エラーメッセージを 読みます - 行番号と位置の番号があります
SRCボタンでプログラムコードを 挿入 - ローカルリーダーはその方が好きです!!そしてあなたの長い放浪はBRRRRRです。
メッセージテキストにソースコードを挿入するためのボタンです。クリックすると、空のウィンドウが表示されますので、そこにコードを貼り付けて、挿入 ボタンをクリックしてください。
ありがとうございます。