В перемнные вносим значения MACD на трёх последних свечках - это позволит отследить точку пересечения. Если при этом цена выше/ниже скользящей, то нужно вычислить на сколько пунктов. Если пересечение MACD только что имело место и при этом цена в пределах допуска (не шибко далеко убежала), то ставим ордер.
В чём у Вас проблема-то?
В перемнные вносим значения MACD на трёх последних свечках - это позволит отследить точку пересечения. Если при этом цена выше/ниже скользящей, то нужно вычислить на сколько пунктов. Если пересечение MACD только что имело место и при этом цена в пределах допуска (не шибко далеко убежала), то ставим ордер.
В чём у Вас проблема-то?
Проблема в том, что я только начал заниматься программированием, с остальной частью у меня проблем не возникнет, а вот в этом я сразу увидел проблему.
Если можете, сделайте набросок по своим словам, заранее благодарен
Проблема в том, что я только начал заниматься программированием, с остальной частью у меня проблем не возникнет, а вот в этом я сразу увидел проблему.
Если можете, сделайте набросок по своим словам, заранее благодарен
Code Base |
Посмотрите в Code Base, там есть много вариантов советников на МАКДи .Особенно в начале .
Или наберите в поиске форума "Советник на МАКДи".Там тоже будет много ссылок на готовые светники с МАКДи, на дюбой вкус .
А тем более, если Вы только начинаете изучать программирование особенно будет интересно почитать опубликованные статьи .Там все подробно расписано и разъяснено.
Например эта статья "Пример создания эксперта"
Вы не поняли, как использзовать показания индикаторов. Для этого нужно ввести значение индикатора в переменную. Чтоб сделать это без ошибок, нужно попросту руководствоваться справкой в метаэдиторе - там инфы предостаточно. Ну а с переменными мы можем опосля делать что угодно.
Например, объявляем переменную, которая будет содержать значение скользящей на первой свече.
double MA_1;
Открываем справку:
double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
Руководствуясь описаниями параметров, которые даны в справке ниже этой строчки, пишем код 55-ти периодного скользящего среднего (обычного), построенного по ценам закрытия:
МА_1=iMA(Symbol(),0,55,0,MODE_SMA,PRICE_CLOSE,1);
Ну вот и всё. С индикатором MACD поступаем точно так же.
gss спасибо, почитаю, но все же только своими силами я его врядли состряпаю
Состряпаете, если на самом деле будет нужно.На форуме обязательно помогут, при условии, что сами что-то будете делать.И обязательно нужно прочитать статьи и докыментацию.А базе обязательно найдется советник на любой вкус.
В вашем случае примерно так:
1. Moving Average Convergence/Divergence (MACD)
Оперирует четырьмя переменными: MACDFast (период быстрой МА), MACDSlow (период медленной МА), MACDSignal (период сигнальной МА) и MAPrice
(цена расчета средних). Сигналы также просты: BUY - главная линия выше сигнальной, SELL - главная линия ниже сигнальной.
"Нет сигнала" не используется.
if (UseMACD)
{
double MACDMain1 = iMACD(Symbol(), 0, MACDFast, MACDSlow, MACDSignal, MACDPrice,
MODE_MAIN, 1); // значение индикатора на 1 баре, тот,который только что закончился
double MACDMain2 = iMACD(Symbol(), 0, MACDFast, MACDSlow, MACDSignal, MACDPrice,
MODE_MAIN, 2); // значение индикатора на предыдущем (перед 1 баром) 2 баре
double MACDSig1 = iMACD(Symbol(), 0, MACDFast, MACDSlow, MACDSignal, MACDPrice,
MODE_SIGNAL, 1);
if (MACDMain1 > MACDSig1 && MACDMain2<0 && MACDMain1>0) // Buy Signal
Signal++;
if (MACDMain1 < MACDSig1 && MACDMain2>0 && MACDMain1<0) // Sell Signal
Signal--;
}
2. Индикатор Envelopes
Использует целых пять внешних переменных: EnvPeriod (период индикатора), EnvPrice (цена расчета), EnvShift (сдвиг вправо),
EnvMethod (метод сглаживания) и EnvDeviation (отклонение индикатора - в Вашем случае 10 пипсов. ). Так как внешний вид, да и сама суть индикатора - канал,
то сигналы подобны сигналам при работе в канале: BUY - цена закрытия свечи ниже нижней линии, SELL - цена закрытия свечи выше
верхней линии и "нет сигнала" - цена закрытия между линиями.
if (UseEnvelopes)
{
double EnvUp = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
EnvDeviation, MODE_UPPER, 1);
double EnvDn = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
EnvDeviation, MODE_LOWER, 1);
if (Close[1] < EnvDn) // Buy Signal
Signal++;
if (Close[1] > EnvUp) // Sell Signal
Signal--;
}
или можно записать попроще условие 2 индикатора:
if (UseCrossMA)
{
double MAFast_b = iMA(Symbol(), 0, MAFastPeriod, MAFastShift, MAFastMethod,
MAFastPrice, 1) + N*Point; // здесь N ваши 10 пунктов над средней
double MAFast_s = iMA(Symbol(), 0, MAFastPeriod, MAFastShift, MAFastMethod,
MAFastPrice, 1) - N * Point; // здесь соответсвенно 10 пунктов ниже средней.Получается канал повторяющий движение самой средней.
if (MAFast_b > Close [1]) // Buy Signal
Signal++;
if (MAFast_s < Close[1]) // Sell Signal
Signal--;
}
Есть еще и другие виды каналов, экспеременируйте и читайте статьи и документацию форума.Актовнее используйте "поиск", наверняка,то что Вы хотите уже давно сделали за Вас и выложили для народа в свободный доступ.
А это обязательно должно быть в начале советника:
extern string A1 = "Настройки индикатора MACD";
extern bool UseMACD = False;
extern int MACDFast = 12;
extern int MACDSlow = 26;
extern int MACDSignal = 9;
extern int MACDPrice = 0;
extern string A2 = "Настройки индикатора Envelopes";
extern bool UseEnvelopes = False;
extern int EnvPeriod = 21;
extern int EnvShift = 0;
extern int EnvMethod = 0;
extern int EnvPrice = 0;
extern double EnvDeviation = 0.5;
extern string A3 = "Настройки индикатора MA";
extern bool UseCrossMA = False;
extern int MAFastPeriod = 34;
extern int MAFastPrice = 0;
extern int MAFastMethod = 0; // Метод MA:
// 0 - Simple MA
// 1 - Exponential MA
// 2 - Smoothed MA
// 3 - Linear weighted MA
extern int MAFastShift = 0;
extern int N =10;
и ниже уже в функции старрт( за основу возьмите любой простой советник из базы)
Вот сдесь Ищу мультииндикаторный шаблон советник я выкладывл шаблон советника, там более 30 индикаторов. Только нужно включать их (или выключать) по своему усмотрению ( в настройках это сигналы True и False. )
И обязательно сами тоже думайте и работайте.
Халявщиков здесь, как и везде, не любят.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
У меня не получается привязать цену к линии МА и сюда же МАКД
Условие покупки:
Ордер открывается на рост, если
1. На МАКДе снизу-вверх было пересечение нулевого уровня
2. Цена находится на расстоянии N пунктов выше или ниже от линии МА. Если к примеру N=10, то в этом диапазоне 20 пипсов ордер открывается. А если цена была к примеру на 15 пипсов выше или ниже, то ждемс дальше. Чтобы все было более понятно, я прикрепил картинку
2 красные точки на картинке - точки входа. Вот что я имел ввиду под переменной N