コーディングのヘルプ - ページ 507 1...500501502503504505506507508509510511512513514...786 新しいコメント Mladen Rakic 2015.07.28 12:56 #5061 tristantsh: mntiwanaさん、maldenさんありがとうございます。しかし、なぜまた購入しなければならないのでしょうか?メッセージでこれらのインジケータを送信することができます そのインジケータを購入したときに受け取ったリンク付きのオリジナルのメールをsupport@forex-tsd.com に送ってください。すべてが正しければ、アップデート版が届きます。 Tristan Tairo 2015.07.28 13:02 #5062 しかし、nmc前のインジケータはnmc後よりも面白そうに見える。私の感覚だけでしょうか? Mladen Rakic 2015.07.28 13:13 #5063 tristantsh: でも、nmc前のインジケータの方がnmc後より面白そうなんですけど。私の感覚だけでしょうか? nmc」バージョンの結果は、「pre-nmc」バージョンと比較して、全く変化していません。"nmc "は "new metatrader compatible "の略です。 お疲れ様でした Jovager 2015.07.28 13:28 #5064 なぜ? Mladenです。 このEAが動作しない理由を教えてください。 //----------------------- eaのパラメータ 外部文字列 Expert_Name = "---------- Pending Order EA v1", Expert_Name2 = "---------- 現在の価格は、EntryLevel = 0を設定する"; 外部ダブル EntryLevel = 1.8600, Distance = 100, StopLoss = 50, TakeProfit = 50。 TrailingStop = 50; 外部文字列 Order_Setting = "---------- 注文の設定"; 外部 int NumberOfTries = 5, スリッページ = 5, MagicNumber = 1234; 外部文字列 MM_Parameters = "---------- マネーマネジメント"; 外部ダブル ロット =0.01。 extern bool MM = false, //マネーマネジメントを使用するかどうか AccountIsMicro = true; //マイクロアカウントを使用するかどうか 外部int リスク = 0; //10%。 外部文字列 Testing_Parameters= "---------- バックテストパラメーター"; extern bool Show_Settings = true; //グローバル変数 静的 int TimeFrame = 0; 文字列 TicketComment = "PendingOrderEA v2", LastTrade; ブール TradeAllow = true, EntryAllow = true; //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int init() { //----------------------- マジックナンバーとチケットコメントの生成 //---------------------- source : pengie MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period()); TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period()).これは、チケットコメントとマジックナンバーの両方を生成するためのものです。 //----------------------- チャートにEA設定を表示する //----------------------- source : codersguru if(Show_Settings) subPrintDetails(); else Comment(""); return(0); } //+------------------------------------------------------------------+ //エキスパート初期化関数 //+------------------------------------------------------------------+ int deinit() { //----------------------- ユーザーが時間枠を変更する際に再カウントを行わないようにする //----------------------- ソース:codersguru TimeFrame=Period()。 return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int start() { ダブル // BuyLevel, SellLevel; int cnt, チケット 合計 //----------------------- 買値と売値の設定 if(EntryLevel==0) EntryLevel = Bid; // BuyLevel = EntryLevel + Distance*Point; 売りレベル = エントリーレベル - 距離*ポイント; // if((買いレベル-売りレベル)<10*Point || (買いレベル-売りレベル)<10*Point)) // { // Comment("無効なエントリー価格または距離"); // return(0); // } //----------------------- マネーマネジメントを使用している場合は、ロットを調整します。 if(MM) Lots = subLotSize(); //----------------------- ENTRY //----------------------- マジックナンバーとシンボルに基づく総注文数 total = subTotalTrade(); //----------------------- 注文を1回だけ出す if(TradeAllow) { //----------------------- 取引がない場合 if(total<1 && EntryAllow) { ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red).を送信します。 // ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green).EntryAllow = false; EntryAllow = falseです。 return(0); } if(total==1) { subDeleteOrder(); TradeAllow = false; } } //----------------------- トレイリングストップセクション if(TrailingStop>0 && subTotalTrade()>0){ total = OrdersTotal(); for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL &&) OrderSymbol()==Symbol() && OrderMagicNumber() オーダーマジック番号()==マジック番号) { subTrailingStop(OrderType())。 return(0); } } } return(0); //----------------------- プログラム終了 //+------------------------------------------------------------------+ //| 関数定義 //+------------------------------------------------------------------+ //----------------------- 資金管理機能 //----------------------- source : codersguru double subLotSize() { double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100; if(AccountIsMicro==false) //通常口座の場合 { if(lotMM < 0.1) lotMM = Lots; if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5; if(lotMM > 1.0) lotMM = MathCeil(lotMM); if(lotMM > 100) lotMM = 100; } else //マイクロアカウント { if(lotMM < 0.01) lotMM = Lots; if(lotMM > 1.0) lotMM = MathCeil(lotMM); if(lotMM > 100) lotMM = 100; } return (lotMM); } //----------------------- シンボルとマジックナンバー関数に基づく注文数 int subTotalTrade() { int cnt, total = 0; for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if(OrderType()<=OP_SELL &&) OrderSymbol()==Symbol() && OrderMagicNumber() OrderMagicNumber()==MagicNumber) total++; } return(total); } //注文の削除関数 void subDeleteOrder() { int cnt, total = 0; total = OrdersTotal(); for(cnt=total-1;cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && (オーダーシンボル)) オーダーマジック番号()==マジック番号) { switch(OrderType()) { // ケース OP_BUYLIMIT : // ケース OP_BUYSTOP : ケース OP_SELLLIMIT ケース OP_SELLSTOP : OrderDelete(OrderTicket()); } } } } //----------------------- トレーリングストップ機能 //----------------------- ソース : codersguru //----------------------- 修正したもの:FIREDAVE void subTrailingStop(int Type) { if(Type==OP_BUY) // 買いのポジションが開かれる { if(Bid-OrderOpenPrice()>Point*TrailingStop &&) オーダーストップロス()<ビッドポイント*トレイリングストップ) { 注文変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } if(Type==OP_SELL) // 売りポジションがオープンされました。 { if(OrderOpenPrice()-Ask>Point*TrailingStop)の場合。 { if(OrderStopLoss()>Ask+Point*TrailingStop||OrderStopLoss()==0))。 { オーダーモディファイ(オーダーチケット(),オーダーオープン価格(),アスク+ポイント*トレイリングストップ,オーダーテイクプロフィット(),0,レッド)。 return(0); } } } } //----------------------- シンボルと時間軸を元にマジックナンバーを生成する関数 //----------------------- ソース : pengie //----------------------- 修正したものFIREDAVE int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame) { int isymbol = 0; if (symbol == "EURUSD") isymbol = 1; else if (symbol == "GBPUSD") isymbol = 2; if (symbol == "USDJPY") isymbol = 2; else if (symbol == "USDJPY") isymbol = 3; else if (symbol == "AUDCAD") isymbol = 4; else if (symbol == "AUDCAD") isymbol = 4; else if (symbol == "AUDUSD") isymbol = 5; else if (symbol == "AUDUSD") isymbol = 5; else if (symbol == "USDCAD") isymbol = 6; else if (symbol == "EURGBP") isymbol = 7; else if (symbol == "EURGBP")isymbol=7。 else if (symbol == "EURJPY") isymbol = 8; else if (symbol == "EURCHF") isymbol = 9; else if (symbol == "EURAUD") isymbol = 10; else if (symbol == "EURCAD") isymbol = 11; else if (symbol == "GBPUSD") isymbol = 12; else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPCAD") isymbol = 16; else if (symbol == "GBPCAD") isymbol = 16; else isymbol = 17; if(isymbol<10) MagicNumber = MagicNumber * 10; return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame))); } //-----------------------コメント関数を 表示する //----------------------- ソース : codersguru void subPrintDetails() { string sComment = ""; string sp = "-----------------------------------------------------------------------------n"; string NL = "\n"; sComment = sp; sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | "; sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | "; sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL.Stop(StopLoss,0);。 sComment = sComment + sp; sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ".Lots(Lots,1)となります。 sComment = sComment + "MM=" + subBoolToStr(MM) + " | "; sComment = sComment + "リスク=" + DoubleToStr(Risk,0) + "%" + NL; sComment = sComment + sp; コメント(sComment); } //----------------------- ブール変数から文字列への変換関数 //----------------------- ソース:codersguru 文字列 subBoolToStr ( bool 値 ) { if(value) return ("True"); else return ("False")。 } //----------------------- 関数終了 よろしくお願いします。 Jo Coding help 出口戦略ステップ・ストップとトレーリング・ストップの比較 コーディングヘルプ...アラートの代わりにインジケータをフィルタリングする方法を教えてください。 gutu 2015.07.28 15:30 #5065 mladenです。 下記はコンパイル時に2つのエラーが発生します。 ファイル: rstochalert-4tf.mq4 3 kb Mladen Rakic 2015.07.28 16:12 #5066 candyman752: mladenさん、お元気でしょうか。下記はコンパイル時に2つのエラーが発生します。 キャンディマン752 試してみてください :rstochalert-4tf_1.mq4 ファイル: rstochalert-4tf_1.mq4 3 kb mntiwana 2015.07.28 20:01 #5067 親愛なるMLADEN。 (私の質問はいつも、コーディングのヘルプというより、修理のヘルプについてなのです。) 私の質問は...この方法で正しいのでしょうか...そして2番目の質問は、80行目に残っている2番目の警告についてです...このままにしておけば、機能に 問題はないのでしょうか...? よろしくお願いします。 mntiwana ファイル: 1-error_and_warning.png 150 kb 2-error__1_warning_removed.png 139 kb Mladen Rakic 2015.07.28 21:00 #5068 mntiwana: 親愛なるMLADEN。(私の質問はいつも、コーディングのヘルプというよりも、修理のヘルプについてです) 私の質問は...この方法で正しいかどうかです...そして2番目の質問は、80行目でまだ残っている2番目の警告についてです...このままにしておけば、機能に問題はないのでしょうか...? よろしくお願いします。 ムンティワナ mntiwana この方法ですべてOKです。 mntiwana 2015.07.28 21:40 #5069 mladen: mntiwana その方法ですべてOKです。あなたは変更を行いました OK 好奇心旺盛な学生を励ましてくれる偉大な上司に感謝します。 よろしくお願いします。 Mladen Rakic 2015.07.29 05:15 #5070 Jovager: ムラデンこのeaが動作しない理由を教えてください。 //----------------------- eaのパラメータ 外部文字列 Expert_Name = "---------- Pending Order EA v1", Expert_Name2 = "---------- For current price set EntryLevel = 0"; 外部ダブル EntryLevel = 1.8600, Distance = 100, StopLoss = 50, TakeProfit = 50。 TrailingStop = 50; 外部文字列 Order_Setting = "---------- 注文の設定"; 外部 int NumberOfTries = 5, スリッページ = 5, MagicNumber = 1234; 外部文字列 MM_Parameters = "---------- マネーマネジメント"; 外部ダブル ロット =0.01。 extern bool MM = false, //マネーマネジメントを使用するかどうか AccountIsMicro = true; //マイクロアカウントを使用するかどうか 外部int リスク = 0; //10%。 外部文字列 Testing_Parameters= "---------- バックテストパラメーター"; extern bool Show_Settings = true; //グローバル変数 静的 int TimeFrame = 0; 文字列 TicketComment = "PendingOrderEA v2", LastTrade; ブール TradeAllow = true, EntryAllow = true; //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int init() { //----------------------- マジックナンバーとチケットコメントの生成 //---------------------- source : pengie MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period()); TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period()).これは、チケットコメントとマジックナンバーの両方を生成するためのものです。 //----------------------- チャートにEA設定を表示する //----------------------- source : codersguru if(Show_Settings) subPrintDetails(); else Comment(""); return(0); } //+------------------------------------------------------------------+ //エキスパート初期化関数 //+------------------------------------------------------------------+ int deinit() { //----------------------- ユーザーが時間枠を変更する際に再カウントを行わないようにする //----------------------- ソース:codersguru TimeFrame=Period()。 return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int start() { ダブル // BuyLevel, SellLevel; int cnt, チケット 合計 //----------------------- 買値と売値の設定 if(EntryLevel==0) EntryLevel = Bid; // BuyLevel = EntryLevel + Distance*Point; 売りレベル = エントリーレベル - 距離*ポイント; // if((買いレベル-売りレベル)<10*Point || (買いレベル-売りレベル)<10*Point)) // { // Comment("無効なエントリー価格または距離"); // return(0); // } //----------------------- マネーマネジメントを使用している場合は、ロットを調整します。 if(MM) Lots = subLotSize(); //----------------------- ENTRY //----------------------- マジックナンバーとシンボルに基づく総注文数 total = subTotalTrade(); //----------------------- 注文を1回だけ出す if(TradeAllow) { //----------------------- 取引がない場合 if(total<1 && EntryAllow) { ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red).を送信します。 // ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green).EntryAllow = false; EntryAllow = falseです。 return(0); } if(total==1) { subDeleteOrder(); TradeAllow = false; } } //----------------------- トレイリングストップセクション if(TrailingStop>0 && subTotalTrade()>0){ total = OrdersTotal(); for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL &&) OrderSymbol()==Symbol() && OrderMagicNumber() オーダーマジック番号()==マジック番号) { subTrailingStop(OrderType())。 return(0); } } } return(0); //----------------------- プログラム終了 //+------------------------------------------------------------------+ //| 関数定義 //+------------------------------------------------------------------+ //----------------------- 資金管理機能 //----------------------- source : codersguru double subLotSize() { double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100; if(AccountIsMicro==false) //通常口座の場合 { if(lotMM < 0.1) lotMM = Lots; if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5; if(lotMM > 1.0) lotMM = MathCeil(lotMM); if(lotMM > 100) lotMM = 100; } else //マイクロアカウント { if(lotMM < 0.01) lotMM = Lots; if(lotMM > 1.0) lotMM = MathCeil(lotMM); if(lotMM > 100) lotMM = 100; } return (lotMM); } //----------------------- シンボルとマジックナンバー関数に基づく注文数 int subTotalTrade() { int cnt, total = 0; for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if(OrderType()<=OP_SELL &&) OrderSymbol()==Symbol() && OrderMagicNumber() OrderMagicNumber()==MagicNumber) total++; } return(total); } //注文の削除関数 void subDeleteOrder() { int cnt, total = 0; total = OrdersTotal(); for(cnt=total-1;cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && (オーダーシンボル)) オーダーマジック番号()==マジック番号) { switch(OrderType()) { // ケース OP_BUYLIMIT : // ケース OP_BUYSTOP : ケース OP_SELLLIMIT ケース OP_SELLSTOP : OrderDelete(OrderTicket()); } } } } //----------------------- トレーリングストップ機能 //----------------------- ソース : codersguru //----------------------- 修正したもの:FIREDAVE void subTrailingStop(int Type) { if(Type==OP_BUY) // 買いのポジションが開かれる { if(Bid-OrderOpenPrice()>Point*TrailingStop &&) オーダーストップロス()<ビッドポイント*トレイリングストップ) { 注文変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } if(Type==OP_SELL) // 売りポジションがオープンされました。 { if(OrderOpenPrice()-Ask>Point*TrailingStop)の場合。 { if(OrderStopLoss()>Ask+Point*TrailingStop||OrderStopLoss()==0))。 { オーダーモディファイ(オーダーチケット(),オーダーオープン価格(),アスク+ポイント*トレイリングストップ,オーダーテイクプロフィット(),0,レッド)。 return(0); } } } } //----------------------- シンボルと時間軸を元にマジックナンバーを生成する関数 //----------------------- ソース : pengie //----------------------- 修正したものFIREDAVE int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame) { int isymbol = 0; if (symbol == "EURUSD") isymbol = 1; else if (symbol == "GBPUSD") isymbol = 2; if (symbol == "USDJPY") isymbol = 2; else if (symbol == "USDJPY") isymbol = 3; else if (symbol == "AUDCAD") isymbol = 4; else if (symbol == "AUDCAD") isymbol = 4; else if (symbol == "AUDUSD") isymbol = 5; else if (symbol == "AUDUSD") isymbol = 5; else if (symbol == "USDCAD") isymbol = 6; else if (symbol == "EURGBP") isymbol = 7; else if (symbol == "EURGBP")isymbol=7。 else if (symbol == "EURJPY") isymbol = 8; else if (symbol == "EURCHF") isymbol = 9; else if (symbol == "EURAUD") isymbol = 10; else if (symbol == "EURCAD") isymbol = 11; else if (symbol == "GBPUSD") isymbol = 12; else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPCAD") isymbol = 16; else if (symbol == "GBPCAD") isymbol = 16; else isymbol = 17; if(isymbol<10) MagicNumber = MagicNumber * 10; return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame))); } //----------------------- コメント関数を表示する //----------------------- source : codersguru void subPrintDetails() { string sComment = ""; string sp = "-----------------------------------------------------------------------------n"; string NL = "\n"; sComment = sp; sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | "; sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | "; sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL.Stop(StopLoss,0);。 sComment = sComment + sp; sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ".Lots(Lots,1)となります。 sComment = sComment + "MM=" + subBoolToStr(MM) + " | "; sComment = sComment + "リスク=" + DoubleToStr(Risk,0) + "%" + NL; sComment = sComment + sp; コメント(sComment); } //----------------------- ブール変数から文字列への変換関数 //----------------------- ソース:codersguru 文字列 subBoolToStr ( bool 値 ) { if(value) return ("True"); else return ("False")。 } //----------------------- 関数終了 よろしくお願いします。 ジョー Jo, mq4ファイルを添付していただけませんか?この方法でテストするのは非常に困難です 1...500501502503504505506507508509510511512513514...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
mntiwanaさん、maldenさんありがとうございます。しかし、なぜまた購入しなければならないのでしょうか?メッセージでこれらのインジケータを送信することができます
そのインジケータを購入したときに受け取ったリンク付きのオリジナルのメールをsupport@forex-tsd.com に送ってください。すべてが正しければ、アップデート版が届きます。
しかし、nmc前のインジケータはnmc後よりも面白そうに見える。私の感覚だけでしょうか?
でも、nmc前のインジケータの方がnmc後より面白そうなんですけど。私の感覚だけでしょうか?
nmc」バージョンの結果は、「pre-nmc」バージョンと比較して、全く変化していません。"nmc "は "new metatrader compatible "の略です。
お疲れ様でした
なぜ?
Mladenです。
このEAが動作しない理由を教えてください。
//----------------------- eaのパラメータ
外部文字列
Expert_Name = "---------- Pending Order EA v1",
Expert_Name2 = "---------- 現在の価格は、EntryLevel = 0を設定する";
外部ダブル
EntryLevel = 1.8600,
Distance = 100,
StopLoss = 50,
TakeProfit = 50。
TrailingStop = 50;
外部文字列
Order_Setting = "---------- 注文の設定";
外部 int
NumberOfTries = 5,
スリッページ = 5,
MagicNumber = 1234;
外部文字列
MM_Parameters = "---------- マネーマネジメント";
外部ダブル
ロット =0.01。
extern bool
MM = false, //マネーマネジメントを使用するかどうか
AccountIsMicro = true; //マイクロアカウントを使用するかどうか
外部int
リスク = 0; //10%。
外部文字列
Testing_Parameters= "---------- バックテストパラメーター";
extern bool
Show_Settings = true;
//グローバル変数
静的 int
TimeFrame = 0;
文字列
TicketComment = "PendingOrderEA v2",
LastTrade;
ブール
TradeAllow = true,
EntryAllow = true;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----------------------- マジックナンバーとチケットコメントの生成
//---------------------- source : pengie
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());
TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period()).これは、チケットコメントとマジックナンバーの両方を生成するためのものです。
//----------------------- チャートにEA設定を表示する
//----------------------- source : codersguru
if(Show_Settings) subPrintDetails();
else Comment("");
return(0);
}
//+------------------------------------------------------------------+
//エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----------------------- ユーザーが時間枠を変更する際に再カウントを行わないようにする
//----------------------- ソース:codersguru
TimeFrame=Period()。
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int start()
{
ダブル
// BuyLevel,
SellLevel;
int
cnt,
チケット
合計
//----------------------- 買値と売値の設定
if(EntryLevel==0) EntryLevel = Bid;
// BuyLevel = EntryLevel + Distance*Point;
売りレベル = エントリーレベル - 距離*ポイント;
// if((買いレベル-売りレベル)<10*Point || (買いレベル-売りレベル)<10*Point))
// {
// Comment("無効なエントリー価格または距離");
// return(0);
// }
//----------------------- マネーマネジメントを使用している場合は、ロットを調整します。
if(MM) Lots = subLotSize();
//----------------------- ENTRY
//----------------------- マジックナンバーとシンボルに基づく総注文数
total = subTotalTrade();
//----------------------- 注文を1回だけ出す
if(TradeAllow)
{
//----------------------- 取引がない場合
if(total<1 && EntryAllow)
{
ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red).を送信します。
// ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green).EntryAllow = false;
EntryAllow = falseです。
return(0);
}
if(total==1)
{
subDeleteOrder();
TradeAllow = false;
}
}
//----------------------- トレイリングストップセクション
if(TrailingStop>0 && subTotalTrade()>0){
total = OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&)
OrderSymbol()==Symbol() && OrderMagicNumber()
オーダーマジック番号()==マジック番号)
{
subTrailingStop(OrderType())。
return(0);
}
}
}
return(0);
//----------------------- プログラム終了
//+------------------------------------------------------------------+
//| 関数定義
//+------------------------------------------------------------------+
//----------------------- 資金管理機能
//----------------------- source : codersguru
double subLotSize()
{
double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;
if(AccountIsMicro==false) //通常口座の場合
{
if(lotMM < 0.1) lotMM = Lots;
if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
else //マイクロアカウント
{
if(lotMM < 0.01) lotMM = Lots;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
return (lotMM);
}
//----------------------- シンボルとマジックナンバー関数に基づく注文数
int subTotalTrade()
{
int
cnt,
total = 0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL &&)
OrderSymbol()==Symbol() && OrderMagicNumber()
OrderMagicNumber()==MagicNumber) total++;
}
return(total);
}
//注文の削除関数
void subDeleteOrder()
{
int
cnt,
total = 0;
total = OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && (オーダーシンボル))
オーダーマジック番号()==マジック番号)
{
switch(OrderType())
{
// ケース OP_BUYLIMIT :
// ケース OP_BUYSTOP :
ケース OP_SELLLIMIT
ケース OP_SELLSTOP :
OrderDelete(OrderTicket());
}
}
}
}
//----------------------- トレーリングストップ機能
//----------------------- ソース : codersguru
//----------------------- 修正したもの:FIREDAVE
void subTrailingStop(int Type)
{
if(Type==OP_BUY) // 買いのポジションが開かれる
{
if(Bid-OrderOpenPrice()>Point*TrailingStop &&)
オーダーストップロス()<ビッドポイント*トレイリングストップ)
{
注文変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
if(Type==OP_SELL) // 売りポジションがオープンされました。
{
if(OrderOpenPrice()-Ask>Point*TrailingStop)の場合。
{
if(OrderStopLoss()>Ask+Point*TrailingStop||OrderStopLoss()==0))。
{
オーダーモディファイ(オーダーチケット(),オーダーオープン価格(),アスク+ポイント*トレイリングストップ,オーダーテイクプロフィット(),0,レッド)。
return(0);
}
}
}
}
//----------------------- シンボルと時間軸を元にマジックナンバーを生成する関数
//----------------------- ソース : pengie
//----------------------- 修正したものFIREDAVE
int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)
{
int isymbol = 0;
if (symbol == "EURUSD") isymbol = 1;
else if (symbol == "GBPUSD") isymbol = 2; if (symbol == "USDJPY") isymbol = 2;
else if (symbol == "USDJPY") isymbol = 3;
else if (symbol == "AUDCAD") isymbol = 4; else if (symbol == "AUDCAD") isymbol = 4;
else if (symbol == "AUDUSD") isymbol = 5; else if (symbol == "AUDUSD") isymbol = 5;
else if (symbol == "USDCAD") isymbol = 6;
else if (symbol == "EURGBP") isymbol = 7; else if (symbol == "EURGBP")isymbol=7。
else if (symbol == "EURJPY") isymbol = 8;
else if (symbol == "EURCHF") isymbol = 9;
else if (symbol == "EURAUD") isymbol = 10;
else if (symbol == "EURCAD") isymbol = 11;
else if (symbol == "GBPUSD") isymbol = 12;
else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPJPY") isymbol = 13;
else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPCHF") isymbol = 14;
else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPAUD") isymbol = 15;
else if (symbol == "GBPCAD") isymbol = 16; else if (symbol == "GBPCAD") isymbol = 16;
else isymbol = 17;
if(isymbol<10) MagicNumber = MagicNumber * 10;
return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));
}
//-----------------------コメント関数を 表示する
//----------------------- ソース : codersguru
void subPrintDetails()
{
string sComment = "";
string sp = "-----------------------------------------------------------------------------n";
string NL = "\n";
sComment = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL.Stop(StopLoss,0);。
sComment = sComment + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ".Lots(Lots,1)となります。
sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";
sComment = sComment + "リスク=" + DoubleToStr(Risk,0) + "%" + NL;
sComment = sComment + sp;
コメント(sComment);
}
//----------------------- ブール変数から文字列への変換関数
//----------------------- ソース:codersguru
文字列 subBoolToStr ( bool 値 )
{
if(value) return ("True");
else return ("False")。
}
//----------------------- 関数終了
よろしくお願いします。
Jo
mladenです。
下記はコンパイル時に2つのエラーが発生します。
mladenさん、お元気でしょうか。下記はコンパイル時に2つのエラーが発生します。
キャンディマン752
試してみてください :rstochalert-4tf_1.mq4
親愛なるMLADEN。
(私の質問はいつも、コーディングのヘルプというより、修理のヘルプについてなのです。)
私の質問は...この方法で正しいのでしょうか...そして2番目の質問は、80行目に残っている2番目の警告についてです...このままにしておけば、機能に 問題はないのでしょうか...?
よろしくお願いします。
mntiwana
親愛なるMLADEN。
(私の質問はいつも、コーディングのヘルプというよりも、修理のヘルプについてです)
私の質問は...この方法で正しいかどうかです...そして2番目の質問は、80行目でまだ残っている2番目の警告についてです...このままにしておけば、機能に問題はないのでしょうか...?
よろしくお願いします。
ムンティワナmntiwana
この方法ですべてOKです。
mntiwana その方法ですべてOKです。あなたは変更を行いました OK
好奇心旺盛な学生を励ましてくれる偉大な上司に感謝します。
よろしくお願いします。
ムラデン
このeaが動作しない理由を教えてください。
//----------------------- eaのパラメータ
外部文字列
Expert_Name = "---------- Pending Order EA v1",
Expert_Name2 = "---------- For current price set EntryLevel = 0";
外部ダブル
EntryLevel = 1.8600,
Distance = 100,
StopLoss = 50,
TakeProfit = 50。
TrailingStop = 50;
外部文字列
Order_Setting = "---------- 注文の設定";
外部 int
NumberOfTries = 5,
スリッページ = 5,
MagicNumber = 1234;
外部文字列
MM_Parameters = "---------- マネーマネジメント";
外部ダブル
ロット =0.01。
extern bool
MM = false, //マネーマネジメントを使用するかどうか
AccountIsMicro = true; //マイクロアカウントを使用するかどうか
外部int
リスク = 0; //10%。
外部文字列
Testing_Parameters= "---------- バックテストパラメーター";
extern bool
Show_Settings = true;
//グローバル変数
静的 int
TimeFrame = 0;
文字列
TicketComment = "PendingOrderEA v2",
LastTrade;
ブール
TradeAllow = true,
EntryAllow = true;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----------------------- マジックナンバーとチケットコメントの生成
//---------------------- source : pengie
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());
TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period()).これは、チケットコメントとマジックナンバーの両方を生成するためのものです。
//----------------------- チャートにEA設定を表示する
//----------------------- source : codersguru
if(Show_Settings) subPrintDetails();
else Comment("");
return(0);
}
//+------------------------------------------------------------------+
//エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----------------------- ユーザーが時間枠を変更する際に再カウントを行わないようにする
//----------------------- ソース:codersguru
TimeFrame=Period()。
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int start()
{
ダブル
// BuyLevel,
SellLevel;
int
cnt,
チケット
合計
//----------------------- 買値と売値の設定
if(EntryLevel==0) EntryLevel = Bid;
// BuyLevel = EntryLevel + Distance*Point;
売りレベル = エントリーレベル - 距離*ポイント;
// if((買いレベル-売りレベル)<10*Point || (買いレベル-売りレベル)<10*Point))
// {
// Comment("無効なエントリー価格または距離");
// return(0);
// }
//----------------------- マネーマネジメントを使用している場合は、ロットを調整します。
if(MM) Lots = subLotSize();
//----------------------- ENTRY
//----------------------- マジックナンバーとシンボルに基づく総注文数
total = subTotalTrade();
//----------------------- 注文を1回だけ出す
if(TradeAllow)
{
//----------------------- 取引がない場合
if(total<1 && EntryAllow)
{
ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red).を送信します。
// ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green).EntryAllow = false;
EntryAllow = falseです。
return(0);
}
if(total==1)
{
subDeleteOrder();
TradeAllow = false;
}
}
//----------------------- トレイリングストップセクション
if(TrailingStop>0 && subTotalTrade()>0){
total = OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&)
OrderSymbol()==Symbol() && OrderMagicNumber()
オーダーマジック番号()==マジック番号)
{
subTrailingStop(OrderType())。
return(0);
}
}
}
return(0);
//----------------------- プログラム終了
//+------------------------------------------------------------------+
//| 関数定義
//+------------------------------------------------------------------+
//----------------------- 資金管理機能
//----------------------- source : codersguru
double subLotSize()
{
double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;
if(AccountIsMicro==false) //通常口座の場合
{
if(lotMM < 0.1) lotMM = Lots;
if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
else //マイクロアカウント
{
if(lotMM < 0.01) lotMM = Lots;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
return (lotMM);
}
//----------------------- シンボルとマジックナンバー関数に基づく注文数
int subTotalTrade()
{
int
cnt,
total = 0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL &&)
OrderSymbol()==Symbol() && OrderMagicNumber()
OrderMagicNumber()==MagicNumber) total++;
}
return(total);
}
//注文の削除関数
void subDeleteOrder()
{
int
cnt,
total = 0;
total = OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && (オーダーシンボル))
オーダーマジック番号()==マジック番号)
{
switch(OrderType())
{
// ケース OP_BUYLIMIT :
// ケース OP_BUYSTOP :
ケース OP_SELLLIMIT
ケース OP_SELLSTOP :
OrderDelete(OrderTicket());
}
}
}
}
//----------------------- トレーリングストップ機能
//----------------------- ソース : codersguru
//----------------------- 修正したもの:FIREDAVE
void subTrailingStop(int Type)
{
if(Type==OP_BUY) // 買いのポジションが開かれる
{
if(Bid-OrderOpenPrice()>Point*TrailingStop &&)
オーダーストップロス()<ビッドポイント*トレイリングストップ)
{
注文変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
if(Type==OP_SELL) // 売りポジションがオープンされました。
{
if(OrderOpenPrice()-Ask>Point*TrailingStop)の場合。
{
if(OrderStopLoss()>Ask+Point*TrailingStop||OrderStopLoss()==0))。
{
オーダーモディファイ(オーダーチケット(),オーダーオープン価格(),アスク+ポイント*トレイリングストップ,オーダーテイクプロフィット(),0,レッド)。
return(0);
}
}
}
}
//----------------------- シンボルと時間軸を元にマジックナンバーを生成する関数
//----------------------- ソース : pengie
//----------------------- 修正したものFIREDAVE
int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)
{
int isymbol = 0;
if (symbol == "EURUSD") isymbol = 1;
else if (symbol == "GBPUSD") isymbol = 2; if (symbol == "USDJPY") isymbol = 2;
else if (symbol == "USDJPY") isymbol = 3;
else if (symbol == "AUDCAD") isymbol = 4; else if (symbol == "AUDCAD") isymbol = 4;
else if (symbol == "AUDUSD") isymbol = 5; else if (symbol == "AUDUSD") isymbol = 5;
else if (symbol == "USDCAD") isymbol = 6;
else if (symbol == "EURGBP") isymbol = 7; else if (symbol == "EURGBP")isymbol=7。
else if (symbol == "EURJPY") isymbol = 8;
else if (symbol == "EURCHF") isymbol = 9;
else if (symbol == "EURAUD") isymbol = 10;
else if (symbol == "EURCAD") isymbol = 11;
else if (symbol == "GBPUSD") isymbol = 12;
else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPJPY") isymbol = 13;
else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPCHF") isymbol = 14;
else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPAUD") isymbol = 15;
else if (symbol == "GBPCAD") isymbol = 16; else if (symbol == "GBPCAD") isymbol = 16;
else isymbol = 17;
if(isymbol<10) MagicNumber = MagicNumber * 10;
return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));
}
//----------------------- コメント関数を表示する
//----------------------- source : codersguru
void subPrintDetails()
{
string sComment = "";
string sp = "-----------------------------------------------------------------------------n";
string NL = "\n";
sComment = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL.Stop(StopLoss,0);。
sComment = sComment + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ".Lots(Lots,1)となります。
sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";
sComment = sComment + "リスク=" + DoubleToStr(Risk,0) + "%" + NL;
sComment = sComment + sp;
コメント(sComment);
}
//----------------------- ブール変数から文字列への変換関数
//----------------------- ソース:codersguru
文字列 subBoolToStr ( bool 値 )
{
if(value) return ("True");
else return ("False")。
}
//----------------------- 関数終了
よろしくお願いします。
ジョーJo,
mq4ファイルを添付していただけませんか?この方法でテストするのは非常に困難です