Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Pertanto, non c'è bisogno di impostare un rapporto esatto tra tamponi e barre. Puoi considerare i tamponi solo con i tamponi ed è meglio usarli come filtri piuttosto che come segnali.
Boris, hai in parte ragione. Fondamentalmente le lunette sono un puntatore. Di nuovo, però, ci sono alcune opzioni qui. Alcuni stanno cercando di entrare in una controtendenza e altri stanno cercando di seguire la tendenza. Ci sono molte varianti, ma non hanno ancora funzionato veramente :(
Boris, hai in parte ragione. Fondamentalmente, i carri sono un puntatore. Anche in questo caso, però, ci sono diverse opzioni. Alcuni cercano di entrare in una controtendenza, e altri vanno in una tendenza... Ci sono molte varianti, ma non hanno ancora funzionato :(
Il punto non è essere tristi, né lo è per gli altri. La linea di fondo è che c'è un bug e il supporto non risponde affatto! Non si preoccupano davvero dei clienti. Sono molto curioso. La richiesta è in sospeso da quasi una settimana, e non c'è nessuna reazione... Non so cosa farci... Forse si può prendere un video e mostrare il prezzo sulla barra corrente e la tara taglia proprio attraverso di essa, ma non ci sono ordini pendenti? Sì, mi sono attaccato a questo momento, ma solo per capirne il motivo. Lunedì lo metterò alla prova su Demo, ma... Ma d'altronde... se il tester è completamente difettoso, a cosa servirà?
... Forse un video e mostrare come il prezzo va e sulla barra corrente, il catrame taglia il mach...
Non l'ho avuto con Mashka.
Quale Mashka?
Ho scritto specificamente in quali casi. Perché cerchi di farne una questione personale? Questo thread è già lungo 9 pagine, ma è ancora lì.
Allego il codice. Ecco lo stesso codice per la visualizzazione:
//+-----------------------------------------------------------------------------------+ //| test_Ma.mq4 | //| hoz | //| | //+-----------------------------------------------------------------------------------+ #property copyright "hoz" #property link "" extern string ___H0 = " ___________ Параметры МА ____________ "; extern int i_TF = 0, i_fastMaPeriod = 10, i_slowMaPeriod = 21; extern string ___H1 = " _____ Параметры ордера _______"; extern int i_magic = 3333021; extern double i_thresholdFromMa = 5; // Отступ от МА extern double buyHear = 10, // Расстояние от МА до отложки на бай SellHear = 10; // Расстояние от МА до отложки на шорт // Машечки double fastMa, slowMa; double pt; datetime lastBarTime; // Время проведения последних рассчётов // Переменные рыночного окружения double g_spread, g_stopLevel, g_tickSize; // Идентификаторы положений машек #define MA_DIRECT_TO_UP 0 // Машки направлены вверх #define MA_DIRECT_TO_DOWN 1 // Машки направлены вниз #define MA_DIRECT_TO_NONE -1 // Машки во флете #define SIGNAL_BUY 0 // Сигнал на покупку #define SIGNAL_SELL 1 // Сигнал на продажу #define SIGNAL_NO -1 // Сигнала нет //+-------------------------------------------------------------------------------------+ //| Функция иницилизации | //+-------------------------------------------------------------------------------------+ int init() { GetMarketInfo(); lastBarTime = 0; if (Digits == 2 || Digits == 4) pt = Point; if (Digits == 1 || Digits == 3 || Digits == 5) pt = Point * 10; if (Digits == 6) pt = Point * 100; if (Digits == 7) pt = Point * 1000; return (0); } //+-------------------------------------------------------------------------------------+ //| Функция деиницилизации | //+-------------------------------------------------------------------------------------+ int deinit() { //---- //---- return (0); } //+-------------------------------------------------------------------------------------+ //| Сбор рыночных данных | //+-------------------------------------------------------------------------------------+ void GetMarketInfo() { g_spread = MarketInfo(Symbol(),MODE_SPREAD) * pt; g_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL) * pt; g_tickSize = MarketInfo(Symbol(),MODE_TICKSIZE) * pt; } //+-------------------------------------------------------------------------------------+ //| Функция нормализации | //+-------------------------------------------------------------------------------------+ double ND(double A) { return (NormalizeDouble(A, Digits)); } //+-------------------------------------------------------------------------------------+ //| Открытие длинной позиции | //+-------------------------------------------------------------------------------------+ bool OpenBuy() { int ticket = -1; double OOP = fastMa + buyHear * pt; // Получаем значение цны открытия if ((ND(OOP) - Ask) >= MathMax(g_stopLevel,g_spread)) // Проверка цену открытия на стоплевел { if (ND(OOP) > Ask) // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником { Print("Bid = ", Bid); Print("Ask = ", Ask); Print("fastMa = ", fastMa); Print("Цена покупки = ", fastMa + buyHear * pt); Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt); ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0); } } if (ticket > 0) { return (true); } else Alert (GetLastError()); } //+-------------------------------------------------------------------------------------+ //| Открытие короткой позиции | //+-------------------------------------------------------------------------------------+ bool OpenSell() { int ticket = -1; double OOP = fastMa - SellHear * pt; // Получаем значение цны открытия if ((Bid - ND(OOP)) >= MathMax(g_stopLevel,g_spread)) // Проверка цену открытия на стоплевел { if (ND(OOP) < Bid) // Проверка что цена открытия ниже Bid, т.к. у нас вход отложенником { Print("Bid = ", Bid); Print("Ask = ", Ask); Print("fastMa = ", fastMa); Print("fastMa + i_thresholdFromMa * pt = ", fastMa + i_thresholdFromMa * pt); Print("Цена покупки = ", fastMa + buyHear * pt); Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt); ticket = OrderSend(Symbol(), OP_SELLSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0); } } if (ticket > 0) { return (true); } else Alert (GetLastError()); } //+-------------------------------------------------------------------------------------+ //| Получаем относительное положение машек | //+-------------------------------------------------------------------------------------+ int GetStateMa(double fastMa, double slowMa) { if (fastMa > slowMa) // Если условия выполнены, то.. return (MA_DIRECT_TO_UP); // ..машки направлены вниз if (fastMa < slowMa) // Если условия выполнены, то.. return (MA_DIRECT_TO_DOWN); // машки направлены вверх return (MA_DIRECT_TO_NONE); // Машки не имеют выраженного направления } //+-------------------------------------------------------------------------------------+ //| Открытие позиций | //+-------------------------------------------------------------------------------------+ bool Trade(int signal) { if (signal == SIGNAL_BUY) // Если сигнал на покупку.. if (!OpenBuy()) // ..покупаем return(false); if (signal == SIGNAL_SELL) // Если сигнал на продажу.. if (!OpenSell()) // ..продаём return(false); return (true); } //+-------------------------------------------------------------------------------------+ //| Получаем общий сигнал на открытие позиции | //+-------------------------------------------------------------------------------------+ int GetSignal() { // if (FindOrders() > 0) // Если есть открытые ордера, то.. // return (SIGNAL_NO); //..ничего не делаем if (GetStateMa(fastMa, slowMa) == MA_DIRECT_TO_UP) if ( ND(MathAbs(fastMa - Ask)) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa.. return(SIGNAL_BUY); if (GetStateMa(fastMa, slowMa) == MA_DIRECT_TO_DOWN) if ( ND(MathAbs(fastMa - Bid)) <= i_thresholdFromMa * pt ) // ..зазор между ценой продажи и машки, <= i_thresholdFromMa.. return(SIGNAL_SELL); return (SIGNAL_NO); } //+-------------------------------------------------------------------------------------+ //| Функция start | //+-------------------------------------------------------------------------------------+ int start() { fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_OPEN,0); slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_OPEN,0); /* Print("Bid = ", Bid); Print("Ask = ", Ask); Print("fastMa = ", fastMa); Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt); */ // Отслеживание открытия нового бара if (lastBarTime == iTime(NULL, 0, 0)) // На текущем баре все необходимые действия.. return (0); // ..уже были выполнены // Рассчёт сигнала int signal = GetSignal(); // Проведение торговых операций if (signal != SIGNAL_NO) if (!Trade(signal)) return (0); lastBarTime = iTime(NULL, 0, 0); // На текущем баре все необходимые действия.. // .. успешно выполнены return (0); }ALCUNE BARRE SONO PALESEMENTE IGNORATE SENZA MOTIVO. E, naturalmente, non ci sono ordini pendenti su di loro. Il codice è corretto. Non c'è niente da aggiustare, per quanto posso vedere.
Qui ci sono degli screenshot che mostrano le posizioni che non sono state aperte. Le date dei test sono visibili anche lì. Per favore, aiutatemi a trovare la ragione. Ho già discusso tutto nel thread, ma non la domanda originale.
Se non ti dispiace formulare di nuovo il ToR, perché hai bisogno di controllare una nuova barra?
Lo metterò in poche parole! C'è un'altra cosa a cui non ho pensato, ma vi darò l'idea completa.
Non ci dovrebbe essere alcun limite al numero di ordini. Cioè, gli ordini possono essere aperti in qualsiasi quantità... ... non importa quanti ne abbiamo, ma abbiamo bisogno di 1 solo ordine da aprire nella barra corrente. Questo è tutto.
Cioè, si apre una nuova barra, quindi possiamo aprire 1 ordine durante questa barra, ma non più di 1 ordine nella barra corrente. L'ordine successivo può essere aperto solo sulla barra successiva, non prima.
È chiaro ora?
E qui ti sbagli...
I periodi delle onde sono diversi...i_fastMaPeriod ei_slowMaPeriod sono rispettivamente 10 e 21!
Lettura consigliata
https://www.mql5.com/ru/articles/1411
Lo faccio ed è facile! Non ho pensato a 1 cosa in più, ma vi darò l'idea completa.
Non ci dovrebbe essere alcun limite al numero di ordini. Cioè gli ordini possono essere aperti in qualsiasi quantità... Non importa quanti sono, ma solo 1 ordine deve essere aperto nella barra corrente. Questo è tutto.
Cioè, si apre una nuova barra, quindi possiamo aprire 1 ordine durante questa barra, ma non più di 1 ordine nella barra corrente. L'ordine successivo può essere aperto solo sulla barra successiva, non prima.
È chiaro ora?
Tenete che su ogni barra si apre solo una posizione
tenere una sola posizione aperta su ogni barra
Lo renderò chiaro e semplice! Non ho ancora pensato a 1 cosa in più, ma vi darò l'idea completa.
Non ci dovrebbe essere alcun limite al numero di ordini. Cioè gli ordini possono essere aperti in qualsiasi quantità... Non importa quanti sono, ma solo 1 ordine deve essere aperto nella barra corrente. Questo è tutto.
Cioè, si apre una nuova barra, quindi possiamo aprire 1 ordine durante questa barra, ma non più di 1 ordine nella barra corrente. L'ordine successivo può essere aperto solo sulla barra successiva, non prima.
Possiamo aprire l'ordine sulla barra corrente solo se questa è aperta, cioè dobbiamo spostare questa linea nella funzione OpenBuy/Sell