初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 252 1...245246247248249250251252253254255256257258259...1504 新しいコメント --- 2014.05.21 09:35 #2511 だろう? ファイル: 11.zip 7 kb Nauris Zukas 2014.05.21 10:16 #2512 sergeev: だろう? を示しています。 のエラーが発生しました。 すべてやった は問題なく動作しますか? can't open "C:\Program FilesAlpari Limited MT5 Demo 1╱MQL5╱include╱Expert╱MySignalsⒸACH_HM_RSI.インクルードファイル expert_ah_hm_rsi.mq5 14 11 --- 2014.05.21 10:24 #2513 abeiks: を示しています。 のエラーが発生しました。 すべてやった は問題なく動作しますか? can't open "C:\Program FilesAlpari Limited MT5 Demo 1╱MQL5╱include╱Expert╱MySignalsⒸACH_HM_RSI.インクルードファイル expert_ah_hm_rsi.mq5 14 11しています。指定されたフォルダにファイルを配置する。 Nauris Zukas 2014.05.21 10:37 #2514 sergeev:私はそうです。指定されたフォルダにファイルを配置する。 ありがとうございます!うまくいきました。:) Евгений 2014.05.21 14:03 #2515 みなさん、こんにちは。CrossArbitrのインジケーターを微調整しているところです。理解するのを助けてください。私は、b(合計)の値が1分間(0バー)のsを合計し、チャート上の他の指標と一緒に表示する必要があり、1分後に合計sは、s1=s固定され、再び形成するために開始されました。インジケータs1の1もチャート上に表示する必要があります。以下は、インジケーターのコードです。 //+------------------------------------------------------------------+ //| CrossArbitr.mq4 | //| Scriptong | //| | //+------------------------------------------------------------------+ #property copyright "Scriptong" #property link "" #property indicator_chart_window //---- input parameters extern bool ShowBid=false; extern bool ShowAsk=false; extern color BidColor = Lime; extern color AskColor = Yellow; extern int AlarmIfPointDifference = 10; extern string AlarmFile = "wait.wav"; bool Activate = False; string FP, SP; double Tick; int WayForCross; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators string S = Symbol(); if(StringFind(S, "USD", 0) != -1) { Comment("Индикатор работает только с кроссовыми парами (GBPJPY, EURJPY, EURGBP и т. д)!"); return(0); } if(StringLen(S) != 6) { Comment("Индикатор работает только с валютными парами, у которых название состоит из шести символов!"); return(0); } // Поиск первой валютной пары кросса FP = StringSubstr(S, 0, 3)+"USD"; MarketInfo(FP, MODE_BID); if(GetLastError() > 0) { FP = "USD"+StringSubstr(S, 0, 3); MarketInfo(FP, MODE_BID); if(GetLastError() > 0) { Comment("Невозможно найти инструмент ", FP, " или ", StringSubstr(S, 0, 3)+"USD. Необходимо добавить его в Обзоре рынка и перезапустить индикатор."); return(0); } } // -------------------------------------- // "Создание" второй валютной пары кросса SP = "USD"+StringSubstr(S, 3, 3); MarketInfo(SP, MODE_BID); if(GetLastError() > 0) { SP = StringSubstr(S, 3, 3)+"USD"; MarketInfo(SP, MODE_BID); if(GetLastError() > 0) { Comment("Невозможно найти инструмент ", SP, " или ", StringSubstr(S, 3, 3)+"USD. Необходимо добавить его в Обзоре рынка и перезапустить индикатор."); return(0); } } // -------------------------------------- // Определение пути синтеза кросса if (StringFind(FP, "USD") == 3 && StringFind(SP, "USD") == 0) WayForCross = 1; if (StringFind(FP, "USD") == 0 && StringFind(SP, "USD") == 0) WayForCross = 2; if (StringFind(FP, "USD") == 3 && StringFind(SP, "USD") == 3) WayForCross = 3; if (StringFind(FP, "USD") == 0 && StringFind(SP, "USD") == 3) WayForCross = 4; // ------------------------------- Tick = MarketInfo(Symbol(), MODE_TICKSIZE); Activate = True; //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- Comment(""); if(ObjectFind("CrossBid") == 0) ObjectDelete("CrossBid"); if(ObjectFind("CrossAsk") == 0) ObjectDelete("CrossAsk"); //---- return(0); } //+------------------------------------------------------------------+ //| Приведение значений к точности одного тика | //+------------------------------------------------------------------+ double ND(double A) { return(NormalizeDouble(A, Digits)); } //+------------------------------------------------------------------+ //| Расчет значения синтетического бида | //+------------------------------------------------------------------+ double CalcBidWayForCross() { switch (WayForCross) { case 1: return(ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_BID))); case 2: return(ND(MarketInfo(SP, MODE_BID)/MarketInfo(FP, MODE_ASK))); case 3: return(ND(MarketInfo(FP, MODE_BID)/MarketInfo(SP, MODE_ASK))); case 4: return(1/(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_BID)))); } } //+------------------------------------------------------------------+ //| Расчет значения синтетического аска | //+------------------------------------------------------------------+ double CalcAskWayForCross() { switch (WayForCross) { case 1: return(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_ASK))); case 2: return(ND(MarketInfo(SP, MODE_ASK)/MarketInfo(FP, MODE_BID))); case 3: return(ND(MarketInfo(FP, MODE_ASK)/MarketInfo(SP, MODE_BID))); case 4: return(1/(ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_ASK)))); } } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- if(!Activate) return(0); // Расчет синтетических Bid и Ask double CalcBid = CalcBidWayForCross(); RefreshRates(); double CalcAsk = CalcAskWayForCross(); double n,m,b,s,s1; int t = Seconds(); // ------------------------------- // Рисуем уровень синтетического Bid if (ShowBid) { if(ObjectFind("CrossBid") == -1) { ObjectCreate("CrossBid", OBJ_HLINE, 0, 0, CalcBid); ObjectSet("CrossBid", OBJPROP_COLOR, BidColor); ObjectSet("CrossBid", OBJPROP_STYLE, STYLE_DOT); } else if(!ObjectMove("CrossBid", 0, 1, CalcBid)) Print("Ошибка перемещения №", GetLastError()); } // ---------------------------------- // Рисуем уровень синтетического Ask if(ShowAsk) { if(ObjectFind("CrossAsk") == -1) { ObjectCreate("CrossAsk", OBJ_HLINE, 0, 0, CalcAsk); ObjectSet("CrossAsk", OBJPROP_COLOR, AskColor); ObjectSet("CrossAsk", OBJPROP_STYLE, STYLE_DOT); } else ObjectMove("CrossAsk", 0, 1, CalcAsk); if(t > 0) {s=b; b++;} else s1=s; } // ---------------------------------- Comment("Реальный BID = ", DoubleToStr(Bid, Digits), ", реальный ASK = ", DoubleToStr(Ask, Digits), "\nСинтетик BID = ", DoubleToStr(CalcBid, Digits), ", синтетик ASK = ", DoubleToStr(CalcAsk, Digits), "\nРазница BID Синтетика и Реального =", n=(Bid-CalcBid), "\, Разница ASK Синтетика и Реального =", m=(CalcAsk-Ask), "\nИтог =", b=(CalcAsk-Ask) - (Bid-CalcBid), "\nПрошлый бар =", s1, ", Текущий бар =", s ); // Выдаем звуковой сигнал о превышении минимальной разности if(ND(MathAbs(CalcBid-Bid)) >= ND(AlarmIfPointDifference*Point)) PlaySound(AlarmFile); // -------------------------------------------------------- //---- return(0); } //+------------------------------------------------------------------+ Евгений 2014.05.21 14:10 #2516 また、Exp-Monitoring-Spread Expert Advisor をチャートにインストールしようとしているのですが、インストールされないのです。MT4はログにExpert Advisorでないため、インストールできないと書き込まれます。コンパイラのエラーは検出されませんでした。スクリプトとして実行されますが、オフラインのチャートは動作しません。何ができるのか?念のため、コードを添付しておきます。#property show_inputs #import "user32.dll" int PostMessageA(int hWnd,int Msg,int wParam,int lParam); #import #define WM_COMMAND 0x0111 #define PAUSE 100 extern string Currency = "USD"; string Symbol1, Symbol2; bool Math; // 0 - S1 / S2, 1 - S1 * S2, 2 - 1 / (S1 * S2) int handle; string SymbolName; int time; double open, low, high, close; int volume; double PriceBid, PriceAsk; double Bid1 = 0, Bid2 = 0, Ask1 = 0, Ask2 = 0; int Digits1, Digits2; double MinSpread, MaxSpread, AverageSpread; bool RealSymbol( string Str ) { return(MarketInfo(Str, MODE_BID) != 0); } void GetSymbols() { string Currency1, Currency2; string SymbolPrefix; string Str1, Str2; Currency1 = StringSubstr(Symbol(), 0, 3); Currency2 = StringSubstr(Symbol(), 3, 3); SymbolPrefix = StringSubstr(Symbol(), 6, StringLen(Symbol()) - 6); Str1 = Currency1 + Currency + SymbolPrefix; Str2 = Currency + Currency1 + SymbolPrefix; if (RealSymbol(Str1)) { Symbol1 = Str1; Str1 = Currency2 + Currency + SymbolPrefix; Str2 = Currency + Currency2 + SymbolPrefix; if (RealSymbol(Str1)) { Symbol2 = Str1; Math = 0; // S1 / S2 } else if (RealSymbol(Str2)) { Symbol2 = Str2; Math = 1; // S1 * S2 } } else if (RealSymbol(Str2)) { Symbol2 = Str2; Str1 = Currency2 + Currency + SymbolPrefix; Str2 = Currency + Currency2 + SymbolPrefix; if (RealSymbol(Str1)) { Symbol1 = Str1; Math = 2; // 1 / (S1 * S2) } else if (RealSymbol(Str2)) { Symbol1 = Str2; Math = 0; // S1 / S2 } } return; } bool GetPrices() { switch (Math) { case 0: // S1 / S2 PriceBid = Bid1 / Ask2; PriceAsk = Ask1 / Bid2; break; case 1: // S1 * S2 PriceBid = Bid1 * Bid2; PriceAsk = Ask1 * Ask2; break; case 2: // 1 / (S1 * S2) PriceBid = 1 / (Ask1 * Ask2); PriceAsk = 1 / (Bid1 * Bid2); break; } return; } bool SymbolChange() { double NewBid1, NewBid2, NewAsk1, NewAsk2; NewBid1 = MarketInfo(Symbol1, MODE_BID); NewBid2 = MarketInfo(Symbol2, MODE_BID); NewAsk1 = MarketInfo(Symbol1, MODE_ASK); NewAsk2 = MarketInfo(Symbol2, MODE_ASK); if ((NormalizeDouble(NewBid1 - Bid1, Digits1) != 0) || (NormalizeDouble(NewBid2 - Bid2, Digits2) != 0) || (NormalizeDouble(NewAsk1 - Ask1, Digits1) != 0) || (NormalizeDouble(NewAsk2 - Ask2, Digits2) != 0)) { Bid1 = NewBid1; Bid2 = NewBid2; Ask1 = NewAsk1; Ask2 = NewAsk2; GetPrices(); return(TRUE); } return(FALSE); } void WriteBar() { FileWriteInteger(handle, time); FileWriteDouble(handle, open); FileWriteDouble(handle, low); FileWriteDouble(handle, high); FileWriteDouble(handle, close); FileWriteDouble(handle, volume); FileFlush(handle); return; } int GetLastTime() { int Tmp1, Tmp2; Tmp1 = iTime(Symbol1, Period(), 0); Tmp2 = iTime(Symbol2, Period(), 0); if (Tmp1 > Tmp2) return(Tmp1); return(Tmp2); } void CreateNewBar() { time = GetLastTime(); open = PriceBid; low = PriceBid; high = PriceBid; close = PriceBid; volume = 1; return; } void ModifyBar() { if (PriceBid > high) high = PriceBid; else if (PriceBid < low) low = PriceBid; close = PriceBid; volume++; } void CreateNewSpread() { MinSpread = (PriceAsk - PriceBid) / Point; MaxSpread = MinSpread; AverageSpread = MinSpread; return; } void ModifySpread() { double Spread = (PriceAsk - PriceBid) / Point; if (Spread > MaxSpread) MaxSpread = Spread; else if (Spread < MinSpread) MinSpread = Spread; AverageSpread += Spread; return; } void WriteSpread() { int hSpread = FileOpen(SymbolName + Period() + "_Spread.dat", FILE_BIN|FILE_READ|FILE_WRITE); AverageSpread /= volume; FileSeek(hSpread, 0, SEEK_END); FileWriteInteger(hSpread, time); FileWriteDouble(hSpread, MaxSpread); FileWriteDouble(hSpread, AverageSpread); FileWriteDouble(hSpread, MinSpread); FileClose(hSpread); return; } void CreateHandle() { string FileName; int Tmp[15], TmpTime; SymbolName = StringSubstr(Symbol(), 0, 6) + "_" + Currency; FileName = SymbolName + Period() + ".hst"; handle = FileOpenHistory(FileName, FILE_BIN|FILE_READ|FILE_WRITE); if (FileSize(handle) > 0) { if (FileSize(handle) > 148) { FileSeek(handle, -44, SEEK_END); TmpTime = FileReadInteger(handle); if (TmpTime == time) { open = FileReadDouble(handle); low = FileReadDouble(handle); high = FileReadDouble(handle); close = FileReadDouble(handle); volume = FileReadDouble(handle); return; } } FileSeek(handle, 0, SEEK_END); return; } FileClose(handle); handle = FileOpenHistory(FileName, FILE_BIN|FILE_WRITE); FileWriteInteger(handle, 400); FileWriteString(handle, "Created by " + WindowExpertName(), 64); FileWriteString(handle, SymbolName, 12); FileWriteInteger(handle, Period()); FileWriteInteger(handle, Digits); FileWriteArray(handle, Tmp, 0, 15); return; } void RefreshChart() { int hwnd = WindowHandle(SymbolName, Period()); PostMessageA(hwnd, WM_COMMAND, 33324, 0); return; } string GetComment() { int Spread = (Ask - Bid) / Point + 0.1; double SpreadX = (PriceAsk - PriceBid) / Point; string Str; Str = Symbol() + " spread = " + Spread + "\n" + SymbolName + " spread = " + DoubleToStr(SpreadX, 1); Str = Str + "\nDifference = " + DoubleToStr(Spread - SpreadX, 1); return(Str); } void init() { GetSymbols(); Digits1 = MarketInfo(Symbol1, MODE_DIGITS); Digits2 = MarketInfo(Symbol2, MODE_DIGITS); SymbolChange(); CreateNewBar(); CreateNewSpread(); CreateHandle(); return; } void deinit() { FileClose(handle); Comment(""); return; } void start() { while (!IsStopped()) { if (SymbolChange()) { Comment(GetComment()); if (time < GetLastTime()) { WriteBar(); WriteSpread(); CreateNewBar(); CreateNewSpread(); RefreshChart(); } else { ModifyBar(); ModifySpread(); } } Sleep(PAUSE); RefreshRates(); } return; } BORIS GOLICIN 2014.05.23 08:27 #2517 通常の始値トレードをトレーリングトレードに置き換えるEAを修正することは可能でしょうか? Vladimir Karputov 2014.05.23 08:38 #2518 ganri: 通常のオープントレードをトレーリングストップに置き換えたいEAを固定化することは可能でしょうか? エキスパートアドバイザーがMQLウィザードを使用して生成された場合は、簡単です。EAを作成する 際に、トレーリングストップが必要であることを指定し、トレーリングストップが何に基づくかを選択する必要があります。 BORIS GOLICIN 2014.05.23 08:50 #2519 barabashkakvn: エキスパートアドバイザーがMQLウィザードを使用して生成された場合は、簡単です。EAを作成する 際に、トレーリングストップが必要であることを指定し、トレーリングストップが何に基づくかを選択する必要があります。 Expert Advisor は MT4 用に作成されました。 igalx 2014.05.24 19:27 #2520 テクニカル分析のためのチャートをダウンロードすることは可能ですか、 - インデックスS&P 500先物チャート、TA 25チャート、およびS&P 500チャートそれは可能であれば、それを行う方法を伝えることができる、多分ダウンロードする方法の説明があります!それは非常に重要です。 あらかじめご了承ください。 1...245246247248249250251252253254255256257258259...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
だろう?
を示しています。 のエラーが発生しました。 すべてやった は問題なく動作しますか?
can't open "C:\Program FilesAlpari Limited MT5 Demo 1╱MQL5╱include╱Expert╱MySignalsⒸACH_HM_RSI.インクルードファイル expert_ah_hm_rsi.mq5 14 11
を示しています。 のエラーが発生しました。 すべてやった は問題なく動作しますか?
can't open "C:\Program FilesAlpari Limited MT5 Demo 1╱MQL5╱include╱Expert╱MySignalsⒸACH_HM_RSI.インクルードファイル expert_ah_hm_rsi.mq5 14 11
しています。
指定されたフォルダにファイルを配置する。
私はそうです。
指定されたフォルダにファイルを配置する。
ありがとうございます!うまくいきました。:)
みなさん、こんにちは。
CrossArbitrのインジケーターを微調整しているところです。理解するのを助けてください。私は、b(合計)の値が1分間(0バー)のsを合計し、チャート上の他の指標と一緒に表示する必要があり、1分後に合計sは、s1=s固定され、再び形成するために開始されました。インジケータs1の1もチャート上に表示する必要があります。以下は、インジケーターのコードです。
また、Exp-Monitoring-Spread Expert Advisor をチャートにインストールしようとしているのですが、インストールされないのです。MT4はログにExpert Advisorでないため、インストールできないと書き込まれます。コンパイラのエラーは検出されませんでした。スクリプトとして実行されますが、オフラインのチャートは動作しません。何ができるのか?念のため、コードを添付しておきます。
通常のオープントレードをトレーリングストップに置き換えたいEAを固定化することは可能でしょうか?
エキスパートアドバイザーがMQLウィザードを使用して生成された場合は、簡単です。EAを作成する 際に、トレーリングストップが必要であることを指定し、トレーリングストップが何に基づくかを選択する必要があります。
あらかじめご了承ください。