誰か5wmzのスクリプトを落書きしてくれ。 - ページ 16 1...91011121314151617 新しいコメント Profitabl 2010.09.11 08:16 #151 そして、ポジションクローズブロックで、正しいのに、ポジションがクローズしない理由を探しているところなのです。何が正解なのでしょうか? Leonid Borsky 2010.09.11 08:28 #152 ================== クロージングブロックを外す。そこで右のものは何かというと...。 次のコードを行の前に 挿入してください : if(total<1){//open positionsが ない場合 //============== Закрытие позиций ============================= if(total>=1){ //если "есть открытых позиций" //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { //----------------------------------------------------- if (OrderType() == OP_BUY) { //бай позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { //селл позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total }//если "есть открытых позиций" //============= конец блока закрытия ===================== Leonid Borsky 2010.09.11 08:38 #153 ポジションを開く ときにエラー関数GetLastError()を呼び出すのですが、なぜかコード内にその参照先がない!? なぜ、私のコードからそれを削除したのですか?- //-- Подключаемые модули -- #include <stderror.mqh> #include <stdlib.mqh> Profitabl 2010.09.11 08:39 #154 がテストされますが、22ポジションでクローズしません。 何も捨てていません、テストはしていますが、EAがあなたのものと取引しないので、新しいコードです。 extern double Lots = 0.1; extern double TakeProfit = 120; extern double StopLoss = 120; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int cnt, ticket, total; static int prevtime = 0; if (Time[0] == prevtime) return(0); //если появился новый бар prevtime = Time[0]; // начинаем работу //+------------------------------------------------------------------+ //| Открытие позиций понедельника | //+------------------------------------------------------------------+ if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени // BUY if ( Close[1]<= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-40*Point,Ask+120*Point,"Regulest",0,0,Green);} if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); }} // SELL if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени if ( Close[1]>= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+40*Point,Bid-100*Point,"Regulest",0,0,Red); if(ticket < 0) { Print("Ошибка открытия ордера SELL #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } } //+------------------------------------------------------------------+ //| Закрытие позиций | //+------------------------------------------------------------------+ if(total>=1){ //если "есть открытых позиций" //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { //----------------------------------------------------- if (OrderType() == OP_BUY) { //бай позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { //селл позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total }//если "есть открытых позиций" } return(0); }} Leonid Borsky 2010.09.11 08:53 #155 extern double Lots = 0.1; extern double TakeProfit = 120; extern double StopLoss = 120; //-- Подключаемые модули -- #include <stderror.mqh> #include <stdlib.mqh> //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int cnt, ticket, total; static int prevtime = 0; if (Time[0] == prevtime) return(0); //если появился новый бар prevtime = Time[0]; // начинаем работу //+------------------------------------------------------------------+ //| Открытие позиций понедельника | //+------------------------------------------------------------------+ if(total<1){ //если нет открытых позиций" if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени //--------------------------------------------- // BUY--------------------- if ( Close[1]<= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-40*Point,Ask+120*Point,"Regulest",0,0,Green); if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } // SELL----------------------- if ( Close[1]>= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+40*Point,Bid-100*Point,"Regulest",0,0,Red); if(ticket < 0) { Print("Ошибка открытия ордера SELL #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } //----------------------------- } } }// если нет открытых позиций //+------------------------------------------------------------------+ //| Закрытие позиций | //+------------------------------------------------------------------+ if(total>=1){ //если "есть открытых позиций" //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { //----------------------------------------------------- if (OrderType() == OP_BUY) { //бай позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { //селл позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total }//если "есть открытых позиций" // return(0); } この方法で試してみてください。そして、売買の開始条件をよく確認すること。 ( Close[1]>= Open[24] && .............................................) Profitabl 2010.09.11 09:03 #156 奇しくも、ベースとなるMT4配信のMoving Average EAのコードを作り直すことに成功しました。テスターでは取引はテストされ、22では取引は終了していますが、EAが自ら取引するかどうかはわかりません。必要であれば、ここにコードを記載します。 //+------------------------------------------------------------------+ //| Moving Average.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #define MAGICMA 20050610 extern double Lots = 0.1; extern double TakeProfit = 120; extern double StopLoss = 120; //extern double MaximumRisk = 0.02; //extern double DecreaseFactor = 3; //extern double MovingPeriod = 12; //extern double MovingShift = 6; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //---- return orders volume if(buys>0) return(buys); else return(-sells); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { int res; if(Volume[0]>1) return; if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени if ( Close[1]>= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+40*Point,Bid-100*Point,"Regulest",MAGICMA,0,Red); return; }}} //---- buy conditions if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени if ( Close[1]<= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-40*Point,Ask+120*Point,"Regulest",MAGICMA,0,Blue); return; }}} //---- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double ma; //---- go trading only for first tiks of new bar if(Volume[0]>1) return; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //---- check order type if(OrderType()==OP_BUY) { if ( DayOfWeek()==1 && Hour() == 22) OrderClose(OrderTicket(),OrderLots(),Bid,3,White); break; } if(OrderType()==OP_SELL) { if( DayOfWeek()==1 && Hour() == 22) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); break; } } //---- } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { //---- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //---- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //---- } //+------------------------------------------------------------------+ Profitabl 2010.09.11 09:08 #157 leonid553: この方法で試してみてください。そして、売買の開始条件をよく確認すること。 ( Close[1]>= Open[24] && .............................................) これを落としてください。ありがとうございます。Moving Avrageのコードですべてうまくいきました。月曜日に彼自身がトレードをしないのであれば、議論を続けよう。4つのGBPUSD, EURUSD, USDJPY, USDCHF EAsは、1つのCHFから判断して、良い利益をもたらすことができる、私のテハン分析方法は、それに値することを願っています。 Leonid Borsky 2010.09.11 09:14 #158 Profitabl: 奇しくも、基本的なMT4配信のMoving Aviagre EAのコードを作り直すことに成功したのです。 テスターでは取引はテストされ、22では取引は終了していますが、EAが自ら取引するかどうかはわかりません。 必要であれば、ここにコードを記載します。 残念ながら、このアドバイザーはテスターでしか正常に動作しないのですが...。 オンライン - 半分以上の信号が欠落します。このような状態になっているからです。 if(Volume[0]>1) return; Profitabl 2010.09.11 09:26 #159 どうすればいいのか、どう変更すればいいのか、もしかしたら削除すればいいのか、だってMovingaのパラメータはもうコードにないんだから。 このコードを使ったMovingaは、どのようにすべての取引を実行するのですか? エキスパートアドバイザーが20~40回試行し、23時位置にオープンプライスが表示されてから30分以内にポジションを建てる必要があります。 つまり、あなたのコードでは、Expert Advisorは火曜日にポジションをオープン し、木曜日と金曜日のティックを逃す可能性があります。 Vitaliy 2010.09.11 09:45 #160 Profitabl: どうすればいいのか、どう変更すればいいのか、もしかしたら削除すればいいのか、だってMovingaのパラメータはもうコードにないんだから。 このコードを使ったMovingaは、どのようにすべての取引を実行するのですか? エキスパートアドバイザーが20~40回試行し、23時位置にオープンプライスが表示されてから30分以内にポジションを建てる必要があります。 つまり、あなたのコードでは、Expert Advisorは火曜日にポジションをオープンし、木曜日と金曜日のティックを逃す可能性があります。 はい、その行をすべて削除してください。顧問の理屈では、不要なものなのでしょう。 1...91011121314151617 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そして、ポジションクローズブロックで、正しいのに、ポジションがクローズしない理由を探しているところなのです。何が正解なのでしょうか?
==================
クロージングブロックを外す。そこで右のものは何かというと...。
次のコードを行の前に 挿入してください :
if(total<1){//open positionsが ない場合
ポジションを開く ときにエラー関数GetLastError()を呼び出すのですが、なぜかコード内にその参照先がない!?
なぜ、私のコードからそれを削除したのですか?-
がテストされますが、22ポジションでクローズしません。 何も捨てていません、テストはしていますが、EAがあなたのものと取引しないので、新しいコードです。
この方法で試してみてください。そして、売買の開始条件をよく確認すること。
( Close[1]>= Open[24] && .............................................)
奇しくも、ベースとなるMT4配信のMoving Average EAのコードを作り直すことに成功しました。テスターでは取引はテストされ、22では取引は終了していますが、EAが自ら取引するかどうかはわかりません。必要であれば、ここにコードを記載します。
この方法で試してみてください。そして、売買の開始条件をよく確認すること。
( Close[1]>= Open[24] && .............................................)
これを落としてください。ありがとうございます。Moving Avrageのコードですべてうまくいきました。月曜日に彼自身がトレードをしないのであれば、議論を続けよう。4つのGBPUSD, EURUSD, USDJPY, USDCHF EAsは、1つのCHFから判断して、良い利益をもたらすことができる、私のテハン分析方法は、それに値することを願っています。
奇しくも、基本的なMT4配信のMoving Aviagre EAのコードを作り直すことに成功したのです。 テスターでは取引はテストされ、22では取引は終了していますが、EAが自ら取引するかどうかはわかりません。 必要であれば、ここにコードを記載します。
残念ながら、このアドバイザーはテスターでしか正常に動作しないのですが...。
オンライン - 半分以上の信号が欠落します。このような状態になっているからです。
どうすればいいのか、どう変更すればいいのか、もしかしたら削除すればいいのか、だってMovingaのパラメータはもうコードにないんだから。
このコードを使ったMovingaは、どのようにすべての取引を実行するのですか?
エキスパートアドバイザーが20~40回試行し、23時位置にオープンプライスが表示されてから30分以内にポジションを建てる必要があります。
つまり、あなたのコードでは、Expert Advisorは火曜日にポジションをオープン し、木曜日と金曜日のティックを逃す可能性があります。
どうすればいいのか、どう変更すればいいのか、もしかしたら削除すればいいのか、だってMovingaのパラメータはもうコードにないんだから。
このコードを使ったMovingaは、どのようにすべての取引を実行するのですか?
エキスパートアドバイザーが20~40回試行し、23時位置にオープンプライスが表示されてから30分以内にポジションを建てる必要があります。
つまり、あなたのコードでは、Expert Advisorは火曜日にポジションをオープンし、木曜日と金曜日のティックを逃す可能性があります。