Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте!
Может ли кто знающий подсказать,как правильно прописать в коде следующее:
есть индикатор MACD Histogramm WIS. В его коде вычисляется гистограмма и окрашываются столбики,в зависимости от направления линии макд и фильтра в различные цвета.
int start()
{
int limit,i;
int counted_bars = IndicatorCounted();
if(counted_bars > 0) counted_bars--;
limit = iBars(NULL,0) - counted_bars;
BufferResize(Filter);
BufferResize(Histogram);
for(i = 0; i <= limit; i++)
MACD[i] = iMA(NULL, 0, FastMA, 0, MAMethod, MAAppliedPrice, i) - iMA(NULL, 0, SlowMA, 0, MAMethod, MAAppliedPrice, i);
for(i = 0; i <= limit; i++)
Signal[i] = iMAOnArray(MACD, iBars(NULL,0), SignalMA, 0, MAMethod, i);
for(i = 0; i <= limit; i++)
Histogram[i] = MACD[i] - Signal[i];
CalcFilter(Line, limit);
for(i = limit; i >= 0; i--)
{
if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = 0.0;
HistogramBuy[i] = Histogram[i];
}
if(Histogram[i] < Histogram[i+1] && Filter[i] < Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = Histogram[i];
HistogramBuy[i] = 0.0;
}
if((Histogram[i] >= Histogram[i+1] && Filter[i] <= Filter[i+1]) || (Histogram[i] <= Histogram[i+1] && Filter[i] >= Filter[i+1]))
{
HistogramWaitClose[i] = Histogram[i];
HistogramSell[i] = 0.0;
HistogramBuy[i] = 0.0;
}
}
return(0);
}
Я пытаюсь в советнике прописать,одним из условий,открытие позиций вверх если:
if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = 0.0;
HistogramBuy[i] = Histogram[i];
но мне нужно чтоб сравнивались всего 2 закрытых бара,то есть первый и второй(нулевой не трогать),а не все (i-баров),то есть нужно чтоб сравнил первый и второй бар,и если гистограмка первого бара больше чем второго и соблюдены условия фильтра и остальные условия советника,то бай,для продаж наоборот ....как правильно это прописать,подскажите,пожалуйста,чайнику-самоучке)
Спасибо
Напишу советник любой сложности. Главное чтобы идея была хорошая. Как вы будет его использовать меня не волнует: будете продавать - не возражаю (денег требовать не буду).
P. S. Если вам нужен индикатор, то вы должны мне описать стратегию, в которой хотите его использовать.
Я ничего непонимаю в програмирование и вообще новичок.
Может такой советник уже есть, вобщем так:
По принцепу "неваляшки" пересечение двух EMA закрывае предыдущую открывает новую, EMA должны быть переменными.
Думаю на Н1, Н4 довольно актуально.
Может такой советник уже есть, вобщем так:
По принцепу "неваляшки" пересечение двух EMA закрывае предыдущую открывает новую, EMA должны быть переменными.
Думаю на Н1, Н4 довольно актуально.
Здравствуйте.
Зделойте пожалуйста простой советник Каторый открывает один ордер на Еннае количество пунктав и если цена прошла их и закрылась в + то ордер закрываеться и открываеться обратно в сторону Плюса. Если в минус то переворачиваеться в сторону минуса.
Задаваемыи параметры - Размер лота и Количество пунктав для прохождения.
Заранее благодарен.
С уважением Димитрий.
Напишу советник любой сложности. Главное чтобы идея была хорошая. Как вы будет его использовать меня не волнует: будете продавать - не возражаю (денег требовать не буду).
P. S. Если вам нужен индикатор, то вы должны мне описать стратегию, в которой хотите его использовать.
Здравствуйте Уважаемые разработчики. Помогите, пожалайста, создать индикатор на основе индикатора SSL_fast_sBar_mtf.
Нужно чтобы индикатор рисовал две "линейки", одна со значением "Lb" большим, а другая с меньшим (или же ТАЙМ ФРЕЙМ больший и меньший). Если на баре цвета
обоих "линеек" одинаковы (а на предыдущем были разные), то в начале следующего бара нужно дать сигнал на открытие (поставить стрелку).
Стрелки должны рисоваться при помощи индикаторных буферов, а не графических объектов. В окне внешних параметров необходимы данные обоих "линеек"
(для последующих подборов их параметров).
http://savepic.ru/1965498.gif
как передать ссылку на индикатор я не знаю. Он находится в библиотеке MQL4.com
Добрый день!
Очень прошу сделать эксперт (ну не программист я) :((.
Технические параметры:
1) Работаем на 4-х часовом свечном графике по пересечениям двух линий Moving Average: Одна (Red) период 18, метод Exponential, к ценам закрытия Close, Вторая соответственно (Yellow) период 8, метод также Exponential, к ценам закрытия Close.
2) Размер сделки 1 лот
3) Работаем от пересечения до пересечения линий. Как только Желтая (Yellow) линия пересекает красную линию (Red) в направлении вверх (север) ордер на покупку, вторичное пересечение линий теперь желтая линия пересекает соответственно красную сверху вниз – фиксация по открытому ордеру, с одновременным открытием нового ордера на продажу, и так далее.
4) По всем сделкам выставляется Стоп лосс 35 пунктов.
4-х часовой график позволяет избегать лишних телодвижений, в отличии от часового, работая наверняка.
Если просто посмотреть по валютным парам, то сама идея себя оправдывает (убыточных сделок нет, в районе нуля в худшем случае), разумеется, необходимо учитывать тренд и запускать эксперт с оглядкой на него. А так, например пара евро/доллар если с 1 сентября покупка +139 пунктов до пересечения, сразу продажа +115 пунктов, затем опять покупка до пересечения 12 октября еще +1184 пункта. Берем август та же картина +368 пунктов продажа, затем покупка продажа на том же уровне без потерь и +181 пункт вниз на продаже прибыли. Далее, например золото GOLD (здесь комиссия 70 пунктов, но и сам пункт 2,5 доллара на лоте) итак с 31 августа покупка +1789 пунктов, сразу продажа +547 пунктов, +4557 пунктов покупка, продажа ноль, +4328 покупка, продажа ноль и до этих выходных еще +3636 пунктов.
С уважением, Юрий
Возьмите за основу стандартный Moving Average, входящий в комплект поставки и экспериментируйте с ним. Можете заменить МА на ЕМА.
Вот полное описание:
//+------------------------------------------------------------------+
//| Moving Average.mq4 |//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA 20050610
extern double Lots = 0.1;
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);
}
//+------------------------------------------------------------------+
//| Calculate optimal lot size |
//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void CheckForOpen()
{
double ma;
int res;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) return;
//---- get Moving Average
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
if(Open[1]>ma && Close[1]<ma)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
return;
}
//---- buy conditions
if(Open[1]<ma && Close[1]>ma)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",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;
//---- get Moving Average
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//----
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(Open[1]>ma && Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
if(Open[1]<ma && Close[1]>ma) 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();
//----
}
//+------------------------------------------------------------------+
Как мне тут поменять чтоб она работала по моему я не пойму?! Мне просто нужна 50ЕМА и 100ЕМА и звуковой сигнал при каждой пересечении!!!