一度立ち上げたレートを5分足チャートで条件付きで追いかけるようなアドバイザー。 - ページ 13 1...67891011121314 新しいコメント Aleksandr 2008.03.26 17:12 #121 rid: セールスマン77 またしても誤操作。 上記のコードを動作させようとしています。ログにエラーが表示され、テキストが表示されます。 18:38:23 '153085': order sell 1.00 GBPUSD opening at 2.0006 sl: 2.0019 tp: 2.0003 failed [Invalid S/L or T/P] (無効なS/LまたはT/P)。 これはどういうことなのでしょうか。 1) また、どのようなMT4を使っていますか? 2) この証券会社で許容されるストップロスとテイクプロフィットの距離はどのくらいですか? http://www.forex4you.org/ その前に、昨日はこのパラメータでt/rとs/lが全て機能しました :(( Aleksandr 2008.03.26 17:28 #122 rid: int start() 私ならこうする...。 そうやって、条件が揃う→取引が成立しない。ログが沈黙している :( Rid 2008.03.26 17:33 #123 ここにコード全体を入れます。そして、そこのDCに確認すること-価格からの停車距離の許容範囲。 Aleksandr 2008.03.26 17:48 #124 契約仕様書 シンボルマーク 名称 マイクロ用1ロット (ミニ用*100) マージン(余裕) for micro (for mini *100) スプレッド リミット&ストップ レベル ギャップレベル スワップ 購入 スワップ セール EURUSD ユーロから米ドルへ EUR 1000 ユーロ 10 2 2 8 0.15 -0.51 GBPUSD GBP/USD GBP 1000 GBP 10 3 3 12 0.80 -1.52 An advisor that would なんで王者からピップスを取り上げないんだ? アバランチ Aleksandr 2008.03.26 17:49 #125 そして、これがコードの全体像です。 //+------------------------------------------------------------------+ //| Expert-000001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" //---- extern string _Parameters_b_Lots = "Параметры модуля расчёта лота"; extern int LotsWayChoice = 0; // Способ выбора рабочего лота // 0-фиксированный, // 1-процент от депозита, // 2-фракционно-пропорциональный, // 3-фракционно-фиксированный, //extern int LotsPercent = 40; // Процент от депозита extern double StopLoss=13; // Stop Loss extern double TakeProfit=3; // Take Profit //extern int Percent=70; extern double Lots=1; // Объем сделки в % extern double Slippage =4; // Максимальное отклонение от запрошенной цены extern int MagicNumber=0; // Order ID extern int Delta=15; // Сигнал приказа в пунктах //extern int TimeForSleep = 0; // Время для отдыха после сделки extern int ticket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int start() { int total=OrdersTotal(); if(total<1) {// если нет открытых позиций if (NumberOfBarOpenLastPos("", 0, -1, MagicNumber)>0){ //--- if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла больше Delta пунктов - продаем!!! { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Продал"); if(ticket<0){Print("Ошибка открытия ордера SELL #",GetLastError());return(0);} } //------------------------------------------------------------------------- if (iOpen(NULL,0,0)-Bid >=Delta*Point) //цена упала больше Delta пунктов - покупаем!!! { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил"); if(ticket<0){Print("Ошибка открытия ордера BUY #",GetLastError());return(0);} } //---- } //if (NumberOfBarOpenLastPos }//if(OrdersTotal return(0); } //------------------------------ //+----------------------------------------------------------------------------+ //| Возвращает номер бара открытия последней позиции или -1. | //| Параметры: | //| sym - наименование инструмента ("" - текущий символ) | //| tf - таймфрейм ( 0 - текущий таймфрейм) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) { datetime oot; int i, k=OrdersTotal(); if (sym=="") sym=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sym) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (oot<OrderOpenTime()) oot=OrderOpenTime(); } } } } } } return(iBarShift(sym, tf, oot, True)); } Rid 2008.03.26 18:02 #126 行に何か問題があるようです if (NumberOfBarOpenLastPos("", 0, -1, MagicNumber)>0){ この条件を満たさない場合、Expert Advisorは動作しません... なぜ、そこにロットを計算するためのパラメータを入れたのでしょうか?必要ないのでは...? Rid 2008.03.26 18:10 #127 //+------------------------------------------------------------------+ //| Expert-000001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" //---- extern double StopLoss=13; // Stop Loss extern double TakeProfit=3; // Take Profit //extern int Percent=70; extern double Slippage =4; // Максимальное отклонение от запрошенной цены extern int MagicNumber=111111; // Order ID extern int Delta=15; // Сигнал приказа в пунктах int ticket; //-- Подключаемые модули -- #include <b-Lots.mqh> #include <stdlib.mqh> //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() そして、b-lotsのライブラリそのものをicludeフォルダに入れる そして、各OrderSend 関数の前に挿入します。 Lots=GetSizeLot(); ticket=OrderSend(Symbol(... ... Aleksandr 2008.03.26 19:14 #128 rid: b-lots ライブラリ本体を iclude フォルダに入れるそして、各OrderSend 関数の前に Lots=GetSizeLot(); ticket=OrderSend(Symbol(... ... を挿入 します。 全部やったのですが、コンパイラが1つだけエラーを発生させます。 'Lots' - variable already defined C:\Program FilesMetaTrader - E-Global TFG﹑EXPERT﹑001.mq4 (21, 15) 以下はそのコードです。 //+------------------------------------------------------------------+ //| Expert-001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" #include <b-Lots.mqh> #include <stdlib.mqh> //---- //extern string _Parameters_b_Lots = "Параметры модуля расчёта лота"; //extern int LotsWayChoice = 0; // Способ выбора рабочего лота // 0-фиксированный, // 1-процент от депозита, // 2-фракционно-пропорциональный, // 3-фракционно-фиксированный, //extern int LotsPercent = 40; // Процент от депозита extern double StopLoss=13; // Stop Loss extern double TakeProfit=3; // Take Profit //extern int Percent=70; extern double Lots=0.9; // Объем сделки в % extern double Slippage =4; // Максимальное отклонение от запрошенной цены extern int MagicNumber=0; // Order ID extern int Delta=15; // Сигнал приказа в пунктах //extern int TimeForSleep = 0; // Время для отдыха после сделки extern int ticket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int start() { int total=OrdersTotal(); if(total<1) {// если нет открытых позиций if (NumberOfBarOpenLastPos("", 0, -1, MagicNumber)>0){ //--- if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла больше Delta пунктов - продаем!!! { Lots=GetSizeLot(); ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Продал"); if(ticket<0){Print("Ошибка открытия ордера SELL #",GetLastError());return(0);} } //------------------------------------------------------------------------- if (iOpen(NULL,0,0)-Bid >=Delta*Point) //цена упала больше Delta пунктов - покупаем!!! { Lots=GetSizeLot(); ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил"); if(ticket<0){Print("Ошибка открытия ордера BUY #",GetLastError());return(0);} } //---- } //if (NumberOfBarOpenLastPos }//if(OrdersTotal return(0); } //------------------------------ //+----------------------------------------------------------------------------+ //| Возвращает номер бара открытия последней позиции или -1. | //| Параметры: | //| sym - наименование инструмента ("" - текущий символ) | //| tf - таймфрейм ( 0 - текущий таймфрейм) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) { datetime oot; int i, k=OrdersTotal(); if (sym=="") sym=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sym) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (oot<OrderOpenTime()) oot=OrderOpenTime(); } } } } } } return(iBarShift(sym, tf, oot, True)); } Rid 2008.03.26 19:44 #129 外部パラメータに残すように言ったのに。そして、ロットの計算パラメータは、PROPERTIES(ライブラリから)に設定されます。 //+------------------------------------------------------------------+ //| Expert-001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" #include <b-Lots.mqh> #include <stdlib.mqh> //---- extern double StopLoss=13; // Stop Loss extern double TakeProfit=3; // Take Profit //extern int Percent=70; extern double Slippage =4; // Максимальное отклонение от запрошенной цены extern int MagicNumber=0; // Order ID extern int Delta=15; // Сигнал приказа в пунктах //extern int TimeForSleep = 0; // Время для отдыха после сделки int ticket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int start() { int total=OrdersTotal(); if(total<1) {// если нет открытых позиций //if (NumberOfBarOpenLastPos("", 0, -1, MagicNumber)>0){ //--- if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла больше Delta пунктов - продаем!!! { Lots=GetSizeLot(); ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Продал"); if(ticket<0){Print("Ошибка открытия ордера SELL #",GetLastError());return(0);} } //------------------------------------------------------------------------- if (iOpen(NULL,0,0)-Bid >=Delta*Point) //цена упала больше Delta пунктов - покупаем!!! { Lots=GetSizeLot(); ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил"); if(ticket<0){Print("Ошибка открытия ордера BUY #",GetLastError());return(0);} } //---- //} //if (NumberOfBarOpenLastPos }//if(OrdersTotal return(0); } //------------------------------ /* //+----------------------------------------------------------------------------+ //| Возвращает номер бара открытия последней позиции или -1. | //| Параметры: | //| sym - наименование инструмента ("" - текущий символ) | //| tf - таймфрейм ( 0 - текущий таймфрейм) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) { datetime oot; int i, k=OrdersTotal(); if (sym=="") sym=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sym) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (oot<OrderOpenTime()) oot=OrderOpenTime(); } } } } } } return(iBarShift(sym, tf, oot, True)); } */ チェックしてみてください。効果があるのかないのか?一度実行したことがあるのですが、うまくいきました...。 そして、その効果もある。やはり、機能を理解する必要がある NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) Aleksandr 2008.03.26 20:03 #130 b-lotsのライブラリを保存したのですが、コンパイルでエラーチェックが必要ですよね? 警告がポップアップ表示されます。 Startfunction not found and cannot be run. どういう意味ですか? 1...67891011121314 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
またしても誤操作。
上記のコードを動作させようとしています。ログにエラーが表示され、テキストが表示されます。
18:38:23 '153085': order sell 1.00 GBPUSD opening at 2.0006 sl: 2.0019 tp: 2.0003 failed [Invalid S/L or T/P] (無効なS/LまたはT/P)。
これはどういうことなのでしょうか。
1) また、どのようなMT4を使っていますか?
2) この証券会社で許容されるストップロスとテイクプロフィットの距離はどのくらいですか?
その前に、昨日はこのパラメータでt/rとs/lが全て機能しました :((
私ならこうする...。
契約仕様書
(ミニ用*100)
for micro
(for mini *100)
レベル
購入
セール
行に何か問題があるようです
この条件を満たさない場合、Expert Advisorは動作しません...
なぜ、そこにロットを計算するためのパラメータを入れたのでしょうか?必要ないのでは...?
'Lots' - variable already defined C:\Program FilesMetaTrader - E-Global TFG﹑EXPERT﹑001.mq4 (21, 15)
以下はそのコードです。
外部パラメータに残すように言ったのに。そして、ロットの計算パラメータは、PROPERTIES(ライブラリから)に設定されます。
チェックしてみてください。効果があるのかないのか?一度実行したことがあるのですが、うまくいきました...。
そして、その効果もある。やはり、機能を理解する必要がある
NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1)警告がポップアップ表示されます。
Startfunction not found and cannot be run.
どういう意味ですか?