[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 389 1...382383384385386387388389390391392393394395396...631 新しいコメント 削除済み 2012.09.19 15:10 #3881 snail09_1: チェックが大変なのか、手抜きなのか。という問いかけがしやすくなります。入札価格はゼロでよいのですか?何も売れなければ可能です8-( 端末がある時点で入札をリセットできるかどうかが問題なのであって(個人の体験談は面白いです) 削除済み 2012.09.19 15:26 #3882 YOUNGA: 端末がどこかのタイミングで入札をリセットできるかどうかが問題なのです(個人の体験談が参考になります)。 見たことがないんです。温度計で絶対零度を見たことがありますか? まあ、それはそれで問題ないでしょう。相談相手がいないのでは? Snegovik 2012.09.19 15:41 #3883 snail09_1: 同じく。このスクリプトを把握すれば、あなたのスクリプトはさらに良いものになるでしょうし、さらに機能を追加することも可能です。 .dllの書き方がよくわかりません。 ということは、スクリプトの基本はこのファイルにあるのですね。 Vladimir Tkach 2012.09.19 15:57 #3884 みんな!履歴上のストラテジーテスターでは、Expert Advisorはオンライン取引時のみ、ファイルに情報を送りません。その理由と解決方法を教えてください。どうすれば治るのかわからない。 ありがとうございました。 Yury Reshetov 2012.09.19 16:02 #3885 net: みんな!履歴上のストラテジーテスターでは、Expert Advisorはオンライン取引時のみ、ファイルに情報を送りません。その理由と解決方法を教えてください。どうすれば治るのかわからない。 ありがとうございました。 保存先は \MetaTrader 4tester eXperts files のディレクトリのみです。 Владимир Тезис 2012.09.19 17:58 #3886 Snegovik: .dllの書き方がよくわかりません。 私の理解が正しければ、スクリプトの基本はこのファイルの中にあります。 1つのスクリプトがサーバーに命令を送り、一度に複数の注文を開けることはできません。1つずつ開かないといけない。提供されるDLLは、単にビジュアルウィンドウを作成し、それを使って動作します。MQL4ツールで十分な場合があります。 Viktar Dzemikhau 2012.09.19 18:46 #3887 私のロット(マーチン)計算機能を紹介します。 double Lots() { // double LotsArray[]={mode_1,mode_2,mode_3,mode_4,mode_5,mode_6}; // double LotsArray[]= {0.1,0.2,0.3,0.4,0.5,0.6}; int LossCount = 0; double LotM=Lot; int total = OrdersHistoryTotal(); for (int i = total-1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_HISTORY); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderProfit() > 0) { LotM=LotsArray[0]; } else { LotM=LotsArray[LossCount+1]; LossCount++; } } } return(LotM); } この関数のグローバル変数です。 double Lot = 0.1; extern double mode_1 = 0.1; extern double mode_2 = 0.2; extern double mode_3 = 0.4; extern double mode_4 = 0.8; extern double mode_5 = 1.6; extern double mode_6 = 3.2; double LotsArray[5]; 以下は、int init()の内容です。 LotsArray[0] = mode_1; LotsArray[1] = mode_2; LotsArray[2] = mode_3; LotsArray[3] = mode_4; LotsArray[4] = mode_5; LotsArray[5] = mode_6; Expert Advisor のテスト時に、Expert Advisor のログに以下のエラーが表示されます。 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: ERROR BUYSTOP : 1.22443 SL:1.22377 TP:1.22506 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: OrderSend error 4051 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: invalid lots amount for OrderSend function 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: Bid:1.22432 Ask:1.22438 avgSpread:0.00006 Commission rate:0.00003 Real avg. spread:0.00009 Lots:1.00 HIGH SPEED MAX 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: 2012.07.19 16:19 tick:514 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: ERROR BUYSTOP : 1.22442 SL:1.22376 TP:1.22505 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: OrderSend error 4051 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: invalid lots amount for OrderSend function 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: Bid:1.22431 Ask:1.22437 avgSpread:0.00006 Commission rate:0.00003 Real avg. spread:0.00009 Lots:1.00 HIGH SPEED MAX 2012.09.19 23:14:22 2012.07.19 16:19 mmm2.1.1~ EURUSD.5,M5: 2012.07.19 16:19 tick:513 コードに何か問題があるのでしょうか?どんな意味があるのでしょうか? ここhttps://docs.mql4.com/ru/runtime/errors これがエラーになるんですね。 err_invalid_function_paramvalue (4051) つまり、間違ったパラメータによるエラーです。私が間違ったロットを理解したように。しかし、ここで何が問題なのかがわからない。 Алексей Тарабанов 2012.09.19 20:00 #3888 hoz: 私のロット(マーチン)計算機能を紹介します。 この関数のグローバル変数です。 以下は、int init()の内容です。 Expert Advisor のテスト時に、Expert Advisor のログに以下のエラーが表示されます。 コードに何か問題があるのでしょうか?どんな意味があるのでしょうか? ここhttps://docs.mql4.com/ru/runtime/errors これがエラーになるんですね。 err_invalid_function_paramvalue (4051) つまり、間違ったパラメータによるエラーです。私が間違ったロットを理解したように。しかし、ここで何が問題なのかがわからない。 double LotsArray[5]; 5から6が正解です。 Lowech 2012.09.20 04:42 #3889 こんにちは!注文を一度修正することは可能ですか? 私は現在、ティック ごとに注文を修正しています!これは正しくないと思います!.... max79 2012.09.20 07:25 #3890 ハロープロフェッショナル、アドバイスをお願いしますベットが外れたときに、同じバーで反対方向に新しいベットを取るように(「フリップ」のように)、EAにどう書けばいいのでしょうか。新しいバーが開いたとき」モデルでテストしています。例のEAについて。 //+------------------------------------------------------------------+ //| CrossMa.mq4 | //| Copyright © 2005, George-on-Don | //| http://www.forex.aaanet.ru | //+------------------------------------------------------------------+ #include <stdlib.mqh> #include <stderror.mqh> #define MAGICMA 20050610 extern double Lots = 0.1; extern double MaximumRisk = 0.02; extern double DecreaseFactor = 3; extern double MovingPeriod = 12; extern double MovingShift = 0; extern double MovingPeriod1 = 4; extern double AtrPer = 6; extern bool SndMl = True ; //+------------------------------------------------------------------+ //| Расчет открытия позиции | //+------------------------------------------------------------------+ 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); } //+------------------------------------------------------------------+ //| Расчет оптимальной величины лота | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //---- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); //---- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //---- return lot size if(lot<0.1) lot=0.1; return(lot); } //+------------------------------------------------------------------+ //| Проверка для открытия позиции с первым тиком нового бара. | //+------------------------------------------------------------------+ void CheckForOpen() { double mas; double maf; double mas_p; double maf_p; double Atr; int res; string sHeaderLetter; string sBodyLetter; //---- go trading only for first tiks of new bar if(Volume[0]>1) return; //---- get Moving Average mas=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1); // динный мувинг 12 maf=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE,1);// короткий мувинг 4 mas_p=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,2); // динный мувинг 12 maf_p=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE,2);// короткий мувинг 4 Atr = iATR(NULL,0,AtrPer,0); //---- Условие продажи if(maf<mas && maf_p>=mas_p) { res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); if (SndMl == True && res != -1) { sHeaderLetter = "Operation SELL by" + Symbol()+""; sBodyLetter = "Order Sell by"+ Symbol() + " at " + DoubleToStr(Bid,4)+ ", and set stop/loss at " + DoubleToStr(Ask+Atr,4)+""; sndMessage(sHeaderLetter, sBodyLetter); } return; } //---- Условие покупки if(maf>mas && maf_p<=mas_p) { res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue); if ( SndMl == True && res != -1) { sHeaderLetter = "Operation BUY at" + Symbol()+""; sBodyLetter = "Order Buy at"+ Symbol() + " for " + DoubleToStr(Ask,4)+ ", and set stop/loss at " + DoubleToStr(Bid-Atr,4)+""; sndMessage(sHeaderLetter, sBodyLetter); } return; } //---- } //+------------------------------------------------------------------+ //| ПРоверка для закрытия открытой позиции | //+------------------------------------------------------------------+ void CheckForClose() { double mas; double maf; double mas_p; double maf_p; string sHeaderLetter; string sBodyLetter; bool rtvl; //---- if(Volume[0]>1) return; //---- mas=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1); // динный мувинг 12 maf=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE,1);// короткий мувинг 4 mas_p=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,2); // динный мувинг 12 maf_p=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE,2);// короткий мувинг 4 //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //---- if(OrderType()==OP_BUY) { if(maf<mas && maf_p>=mas_p) rtvl=OrderClose(OrderTicket(),OrderLots(),Bid,3,Lime); if ( SndMl == True && rtvl != False ) { sHeaderLetter = "Operation CLOSE BUY at" + Symbol()+""; sBodyLetter = "Close order Buy at"+ Symbol() + " for " + DoubleToStr(Bid,4)+ ", and finish this Trade"; sndMessage(sHeaderLetter, sBodyLetter); } break; } if(OrderType()==OP_SELL) { if(maf>mas && maf_p<=mas_p) rtvl=OrderClose(OrderTicket(),OrderLots(),Ask,3,Lime); if ( SndMl == True && rtvl != False ) { sHeaderLetter = "Operation CLOSE SELL at" + Symbol()+""; sBodyLetter = "Close order Sell at"+ Symbol() + " for " + DoubleToStr(Ask,4)+ ", and finish this Trade"; sndMessage(sHeaderLetter, sBodyLetter); } break; } } //---- } //-------------------------------------------------------------------- // функция отправки ссобщения об отрытии или закрытии позиции //-------------------------------------------------------------------- void sndMessage(string HeaderLetter, string BodyLetter) { int RetVal; SendMail( HeaderLetter, BodyLetter ); RetVal = GetLastError(); if (RetVal!= ERR_NO_MQLERROR) Print ("Ошибка, сообщение не отправлено: ", ErrorDescription(RetVal)); } //+------------------------------------------------------------------+ //| Майн функция | //+------------------------------------------------------------------+ void start() { //---- check for history and trading if(Bars<25 || IsTradeAllowed()==false) return; //---- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //---- } //+------------------------------------------------------------------+ ありがとうございました。 1...382383384385386387388389390391392393394395396...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
チェックが大変なのか、手抜きなのか。という問いかけがしやすくなります。入札価格はゼロでよいのですか?何も売れなければ可能です8-(
端末がどこかのタイミングで入札をリセットできるかどうかが問題なのです(個人の体験談が参考になります)。
見たことがないんです。温度計で絶対零度を見たことがありますか?
まあ、それはそれで問題ないでしょう。相談相手がいないのでは?
同じく。このスクリプトを把握すれば、あなたのスクリプトはさらに良いものになるでしょうし、さらに機能を追加することも可能です。
.dllの書き方がよくわかりません。
ということは、スクリプトの基本はこのファイルにあるのですね。
みんな!履歴上のストラテジーテスターでは、Expert Advisorはオンライン取引時のみ、ファイルに情報を送りません。その理由と解決方法を教えてください。どうすれば治るのかわからない。 ありがとうございました。
.dllの書き方がよくわかりません。
私の理解が正しければ、スクリプトの基本はこのファイルの中にあります。
1つのスクリプトがサーバーに命令を送り、一度に複数の注文を開けることはできません。1つずつ開かないといけない。提供されるDLLは、単にビジュアルウィンドウを作成し、それを使って動作します。MQL4ツールで十分な場合があります。
私のロット(マーチン)計算機能を紹介します。
この関数のグローバル変数です。
以下は、int init()の内容です。
Expert Advisor のテスト時に、Expert Advisor のログに以下のエラーが表示されます。
コードに何か問題があるのでしょうか?どんな意味があるのでしょうか?
ここhttps://docs.mql4.com/ru/runtime/errors これがエラーになるんですね。
err_invalid_function_paramvalue (4051)
つまり、間違ったパラメータによるエラーです。私が間違ったロットを理解したように。しかし、ここで何が問題なのかがわからない。
私のロット(マーチン)計算機能を紹介します。
この関数のグローバル変数です。
以下は、int init()の内容です。
Expert Advisor のテスト時に、Expert Advisor のログに以下のエラーが表示されます。
コードに何か問題があるのでしょうか?どんな意味があるのでしょうか?
ここhttps://docs.mql4.com/ru/runtime/errors これがエラーになるんですね。
err_invalid_function_paramvalue (4051)
つまり、間違ったパラメータによるエラーです。私が間違ったロットを理解したように。しかし、ここで何が問題なのかがわからない。
double LotsArray[5]; 5から6が正解です。