Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Создание Советника


Рекомендуемые сообщения

...

ticket = OrderSend(Symbol(),OP_BUY, LotsOptimized() ,Ask, 3, Ask - StopLoss*Point,

Ask + TakeProfit*Point, "Sidus_EA_VII", 1828212, 0, Green);

return(0);

if(OrderType()==OP_BUY)

{

if(MA1<MA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,Lime);

}

return(0);

}

не знаю - стоит ли разбираться в коде, но на этом участке мы видим, что после обработки первого return(0), следующий за ним if вряд ли когда-нибудь получит управление :huh:

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 200
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Здравствуйте. Есть обычный советник на пересечении двух мувингов. Я добавил еще один, и хочу дополнить его фильтром на основе индикатора FX Fish. Я прописал индикатор, но по моему не правильно. Во всяком случае работает он не корректно. Посмотрите пожалуйста.

 

double Fisher= iCustom(NULL, 0, "FX_FISH",25,0,0,0);

double SEma0 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);

double SEma1 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,ShiftEma);

double LEma0 = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);

double LEma1 = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,ShiftEma);

double KEma0 = iMA(NULL,0,KvikEma,0,MODE_EMA,PRICE_CLOSE,0);

double KEma1 = iMA(NULL,0,KvikEma,0,MODE_EMA,PRICE_CLOSE,ShiftEma);

 

Файлы прикрепляю.

 

Че то не получилось прикрепить.

Изменено пользователем Vyalko
Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. Есть обычный советник на пересечении двух мувингов. Я добавил еще один, и хочу дополнить его фильтром на основе индикатора FX Fish. Я прописал индикатор, но по моему не правильно. Во всяком случае работает он не корректно. Посмотрите пожалуйста.

 

double Fisher= iCustom(NULL, 0, "FX_FISH",25,0,0,0);

а на чём основан вывод о неправильности?

 

25, 0 - если это параметры индикатора и название написано правильно, то всё нормально.

Ссылка на комментарий
Поделиться на другие сайты

а на чём основан вывод о неправильности?

 

25, 0 - если это параметры индикатора и название написано правильно, то всё нормально.

 

У меня не получается прикрепить файл, поэтому выложу код.

Открытие и закрытие позиций на покупку происходит правильно. А вот на продажу- или не открывает, или отроет и тут же закроет раз сто. Что только не менял не получалось зделать нормально.

Я думаю, что слишком просто я его вставил, а по другому не умею.

Принцип пересечения трех мувингов с фильтрацией каким то индикатором мне понравился, поэтому и хочу довести до ума.

Ссылка на индюк http://www.fxexpert.ru/forum/index.php?sho...c=465&st=20

 

#property copyright "Виктор Чеботарёв"

#property link "http://www.chebotariov.co.ua/"

 

#define MAGIC 29062006

 

extern int ShortEma = 8; // Период короткой MA

extern int LongEma = 75; // Период длинной MA

extern int KvikEma = 5; // Период быстрой MA

extern int ShiftEma = 3;

extern int Fisher_yur4ik = 150;

extern int RiskMax=10;

extern double LotsMax=90.0;

extern int DecreaseFactor=6;

extern int TakeProfit=110;

extern int StopLoss=80;

extern int TrailingStop=70;

 

//+------------------------------------------------------------------+

//| Расчет оптимального размера лота |

//+------------------------------------------------------------------+

double LotsOptimized()

{

//----

double Lots=NormalizeDouble(AccountBalance()*RiskMax/(100000.0*Ask),1);

if(AccountFreeMargin()<(1000*Ask*Lots))

{

Lots=NormalizeDouble(AccountFreeMargin()*RiskMax/(100000.0*Ask),1);

}

if(Lots>LotsMax)

{

Lots=LotsMax;

Print("Превышен максимальный размер лота. Размер лота изменен на ",LotsMax);

}

 

int orders=HistoryTotal();

int losses=0;

 

if(DecreaseFactor>0)

{

for(int i=orders-1;i>=0;i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)

{

Print("Ошибка в истории!");

break;

}

if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC || OrderType()>OP_SELL)continue;

if(OrderProfit()>0) break;

if(OrderProfit()<0) losses++;

}

if(losses>1)

{

Lots=NormalizeDouble(Lots/(DecreaseFactor*losses),1);

}

}

if(Lots<MarketInfo(Symbol(),MODE_MINLOT))

{

Lots=MarketInfo(Symbol(),MODE_MINLOT);

}

double raznica = MathMod(Lots,MarketInfo(Symbol(),MODE_LOTSTEP));

if(raznica>0.0)

{

Lots -= raznica;

}

//----

return(Lots);

}

 

//+------------------------------------------------------------------+

 

bool symbolOrders()

{

//----

int orders = OrdersTotal();

for(int i=orders-1; i>=0; i--)

{

if(!OrderSelect(i, SELECT_BY_POS ))

{

Print("OrderSelect( ", i, ", SELECT_BY_POS ) - Error #", GetLastError());

continue;

}

if(OrderSymbol()==Symbol())

{

if(OrderMagicNumber()==MAGIC)

{

return(true);

}

}

}

//----

return(false);

}

 

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

int cnt, ticket;

int total=OrdersTotal();

 

if(Bars<100)

{

Print("Количество баров меньше 100");

return(0);

}

if(TakeProfit<10 && TakeProfit>0)

{

TakeProfit=10;

Print("Размер TakeProfit был меньше 10, поэтому изменен на 10");

}

double Fisher= iCustom(NULL, 0, "FX_FISH",25,0,1,1);

double SEma0 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);

double SEma1 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,ShiftEma);

double LEma0 = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);

double LEma1 = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,ShiftEma);

double KEma0 = iMA(NULL,0,KvikEma,0,MODE_EMA,PRICE_CLOSE,0);

double KEma1 = iMA(NULL,0,KvikEma,0,MODE_EMA,PRICE_CLOSE,ShiftEma);

 

 

if(!symbolOrders())

{

if(AccountFreeMargin()<(1000*LotsOptimized()))

{

Print("У Вас недостаточно денег. Свободной маржи = ", AccountFreeMargin());

return(0);

}

if(Fisher>0.3 && KEma0>LEma0 && KEma0>SEma0)

{

if(!IsTradeAllowed())

{

Print("AD BUY: Торговый поток занят.");

return(0);

}

ticket=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"EMA BUY",MAGIC,0,CLR_NONE);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("Открыта позиция на покупку по сигналу EMA BUY: ",OrderOpenPrice());

}

else

{

Print("Ошибка открытия позиции на покупку по сигналу EMA BUY: ",GetLastError());

return(0);

}

}

}

 

if(Fisher<-0.3 && KEma0<LEma0 && KEma0<SEma0)

{

if(!IsTradeAllowed())

{

Print("EMA SELL: Торговый поток занят.");

return(0);

}

ticket=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"EMA SELL",MAGIC,0,CLR_NONE);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("Открыта позиция на продажу по сигналу EMA SELL: ",OrderOpenPrice());

}

else

{

Print("Ошибка открытия позиции на продажу по сигналу EMA SELL: ",GetLastError());

return(0);

}

}

}

}

 

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)

{

if(OrderType()==OP_BUY)

{

if(Fisher < 0.15)

{

if(!IsTradeAllowed())

{

Print("Order сlose: Торговый поток занят.");

return(0);

}

OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);

return(0);

}

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

if(!IsTradeAllowed())

{

Print("Trailing stop: Торговый поток занят.");

return(0);

}

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,CLR_NONE);

return(0);

}

}

}

}

else

{

if(Fisher > -0.15)

{

if(!IsTradeAllowed())

{

Print("Order сlose: Торговый поток занят.");

return(0);

}

OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);

return(0);

}

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

if(!IsTradeAllowed())

{

Print("Trailing stop: Торговый поток занят.");

return(0);

}

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,CLR_NONE);

return(0);

}

}

}

}

}

}

//----

return(0);

}

Ссылка на комментарий
Поделиться на другие сайты

Привет всем.

Помогите реализовать идею. Есть простенький советник на пересечении двух мувингов. Хочу фильтровать индикатором по следующему принципу:

1вариант//мувинги подали сигнал на покупку. Индикатор в этот момент находится ниже нуля, но его цвет зеленый. Результат= разрешить покупку

2 вариант// мувинги подали сигнал на покупку. Индикатор в этот момент находится выше нуля, но его цвет красный. Результат= не разрешать покупку.

3вариант//Самый обычный: мувинги- на покупку и индикатор выше нуля. Результат= разрешить покупку.

Закрытие ордеров хорошо бы реализовать через такую же логику. Но если не получится, то любой вариант.

Индикатор может быть любая двухцветная гистограмма. Я выбрал этот. Он не сильно опаздывает, а вот насчет перерисовки - не знаю. Если у вас есть лучший индикатор- используйте его.

У меня не получился советник. Слабоват я еще в них

______________________________.rar

Изменено пользователем Vyalko
Ссылка на комментарий
Поделиться на другие сайты

Я извиняюсь, что из-за своей занятости не могу посвятить вам много времени!

Быстро просмотрел советник, хороший и даже работает... но: :)

по моему мнению не верно открываются ордера:

1	2006.07.10 04:00	sell	1	0.10	145.73	146.53	144.63	0.00	10000.00

Обратите внимание на то, T/P открыт ниже цены (что есть правильно для SELL), а S/L ещё ниже! В таком виде его функция не выполняется...

Так же неверно открываются ородера на BUY:

3	2006.07.12 14:34	buy	2	0.10	146.72	145.92	147.82	0.00	9926.25

Здесь T/P всего 10 пипс, а S/L целых 80!

 

И ещё, слишком часто срабатывает автотрейлинг - по 1 пипсу передвигая S/L - на реальном счёте это будет трудновыполнимо или даже не возможно!

 

А что касается использование пользовательского индикатора, то несколько ранее я указывал, что не все индикаторы принимают в функции iCustom параметры. Для такого использования такого индикатора в советнике необходимо скомпиллировать с теми параметрами, которые нужны, а в функции их не указывать, т.е. вместо

double Fisher= iCustom(NULL, 0, "FX_FISH",25,0,1,1);

скорее всего нужно сделать так:

double Fisher= iCustom(NULL, 0, "FX_FISH",1,1);

Ссылка на комментарий
Поделиться на другие сайты

Спасибо Liv. Учту. Возможно подскажете ссылку, где я смогу посмотреть код советника который использует двухцветный индикатор- гистограму.

Спасибо за то, что находите для нас время.

Ссылка на комментарий
Поделиться на другие сайты

привет Liv.

попытался сделать советник на пересечение двух МА.

Не могу понять почему не открывает ордера, пожалуйста подскажи в чем тут дело.

 

extern double TakeProfit = 50;

extern double Lots = 0.2;

extern double TrailingStop = 30;

extern double MovingPeriod=12;

extern double MovingPeriod2=21;

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

double MA1Current, MA2Previous, SignalCurrent;

double SignalPrevious, MA3Current, MA4Previous;

int cnt, ticket, total;

// initial data checks

// it is important to make sure that the expert works with a normal

// chart and the user did not make any mistakes setting external

// variables (Lots, StopLoss, TakeProfit,

// TrailingStop) in our case, we check TakeProfit

// on a chart of less than 100 bars

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit less than 10");

return(0); // check TakeProfit

}

// to simplify the coding and speed up access

// data are put into internal variables

MA1Current=iMA(NULL,12,0,0,PRICE_CLOSE,MODE_MAIN,0);

MA2Previous=iMA(NULL,21,0,0,PRICE_CLOSE,MODE_MAIN,1);

SignalCurrent=iMA(NULL,12,0,0,PRICE_CLOSE,MODE_SIGNAL,0);

SignalPrevious=iMA(NULL,21,0,0,PRICE_CLOSE,MODE_SIGNAL,1);

MA3Current=iMA(NULL,0,MovingPeriod,0,MODE_EMA,PRICE_CLOSE,0);

MA4Previous=iMA(NULL,0,MovingPeriod2,0,MODE_EMA,PRICE_CLOSE,1);

 

total=OrdersTotal();

if(total<1)

{

// no opened orders identified

if(AccountFreeMargin()<(1000*Lots))

{

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

// check for long position (BUY) possibility

if(MA1Current>MA2Previous && MA1Current>SignalPrevious && MA2Previous<SignalCurrent && MA3Current>MA4Previous )

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,4,0,Ask+TakeProfit*Point,"Moving Averages",16384,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

// check for short position (SELL) possibility

if(MA1Current<MA2Previous && MA1Current<SignalPrevious && MA2Previous>SignalCurrent && MA3Current<MA4Previous)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,4,0,Bid-TakeProfit*Point,"Moving Averages",16384,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

return(0);

}

// it is important to enter the market correctly,

// but it is more important to exit it correctly...

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // check for opened position

OrderSymbol()==Symbol()) // check for symbol

{

if(OrderType()==OP_BUY) // long position is opened

{

// should it be closed?

if(MA1Current<MA2Previous && MA1Current<SignalPrevious && MA2Previous>SignalCurrent && MA3Current<MA4Previous)

{

OrderClose(OrderTicket(),OrderLots(),Bid,4,Violet); // close position

return(0); // exit

}

// check for trailing stop

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // go to short position

{

// should it be closed?

if(MA1Current>MA2Previous && MA1Current>SignalPrevious && MA2Previous<SignalCurrent && MA3Current>MA4Previous)

{

OrderClose(OrderTicket(),OrderLots(),Ask,4,Violet); // close position

return(0); // exit

}

// check for trailing stop

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

// the end.

Ссылка на комментарий
Поделиться на другие сайты

MDM Сегодня, 13:39 Условие сравнения мувингов не вырабатывает сигнал -то есть не возникает ситуации, когда само условие в блоке if является истинным.

Не знаю, что в условии имелось ввиду - возможно просто не правильно составлено выражение в блоке if, но что должно быть опять же неизвестно, поскольку не описано негде, по этому точнее сказать не могу.

Совет - отлаживайте работу через функцию Comment, то есть если условие возникает - тогда пусть оно выведет сообщение - можно быстренько прогнать по графику и если хоть когда нибудь что то сработает на экране останется коментарий - это удобно для отладки.

 

 

MDM Сегодня, 13:39

Вот кстатьи - когда то тож делал такой советник - просмотрите и попробуйте использовать его, как шаблон для своей работы - как раз отрабатывает по пересечению мувингов:

 

//+------------------------------------------------------------------+

//| CrossMA_.mq4 |

//| Copyright © 2007, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

 

extern double Lots = 0.1;

extern double TrailingStop = 20; // Шаг в пунктах трейлинг стопа

extern double LongStopLoss = 20; // Размер длинного стопа

//extern double TrailingStop = 20; // Шаг в пунктах трейлинг стопа

 

extern int M_MA = 21;

extern int S_MA = 96;

int ticket=0;

 

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

 

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

 

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

fSignalStopTrend();

// OrdersTrail();

return(0);

}

//+------------------------------------------------------------------+

 

void fSignalStopTrend(string strSymbol="",int intTimeFrame=0, int intShift=0)

//

{

 

//Если символ не определен, используем текущий

if (strSymbol=="") {strSymbol=Symbol();}

 

// Тренд вниз медленная ма на баре 0 ниже, чем на баре 1,цена средней ма ниже цены ма 2 и текущая цена ниже

if (iMA(strSymbol,intTimeFrame,S_MA,0,0,0,intShift)<iMA(strSymbol,intTimeFrame,S_MA,0,0,0,intShift+1) &&

iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift)<iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift+1)&&

iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift)>iClose(strSymbol,intTimeFrame,intShift) )

{

Comment ("Тренд Вниз");

CloseBuyOrders();

// Если быстрая МА начинает разворот вверх - тогда закрываем продажу

if(iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift)>iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift+1))

{

Comment ("Запрет продажи");

CloseSellOrders();

}

else

{

//

if (OrdersTotal()==0)// &&

{

Comment ("Продаем");

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"Sell",16384,0,Red);}

}

 

}

//Тренд вверх

if (iMA(strSymbol,intTimeFrame,S_MA,0,0,0,intShift)>iMA(strSymbol,intTimeFrame,S_MA,0,0,0,intShift+1) &&

iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift)>iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift+1) &&

iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift)<iClose(strSymbol,intTimeFrame,intShift) )

{

 

Comment ("Тренд Вверх");

// если цена больше

CloseSellOrders();

 

//

if(iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift)<iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift+1))

{

Comment ("Закрытие покупки");

CloseBuyOrders();

}

else

{

if (OrdersTotal()==0)// &&

// iMA(strSymbol,intTimeFrame,F_MA,0,0,0,intShift)>iMA(strSymbol,intTimeFrame,M_MA,0,0,0,intShift))

{

Comment ("Покупка");

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"Buy",16384,0,Green);

}

}

 

// Если быстрая МА начинает разворот вверх - отрываем продажу

 

}

}

 

void CloseBuyOrders()

// Закрыть все ордера на покупку

{

int cnt = OrdersTotal();

for (int i=cnt-1; i >= 0; i--)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

if (OrderType() == OP_BUY) {

OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID),3);}

}

}

 

void CloseSellOrders()

// Закрыть все ордера на продажу

{

int cnt = OrdersTotal();

for (int i=cnt-1; i >= 0; i--)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

if (OrderType() == OP_SELL) {

OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3);}

 

}

}

Ссылка на комментарий
Поделиться на другие сайты

MDM Сегодня, 13:39 Условие сравнения мувингов не вырабатывает сигнал -то есть не возникает ситуации, когда само условие в блоке if является истинным.

Не знаю, что в условии имелось ввиду - возможно просто не правильно составлено выражение в блоке if, но что должно быть опять же неизвестно, поскольку не описано негде, по этому точнее сказать не могу.

Совет - отлаживайте работу через функцию Comment, то есть если условие возникает - тогда пусть оно выведет сообщение - можно быстренько прогнать по графику и если хоть когда нибудь что то сработает на экране останется коментарий - это удобно для отладки.

MDM Сегодня, 13:39

Вот кстатьи - когда то тож делал такой советник - просмотрите и попробуйте использовать его, как шаблон для своей работы - как раз отрабатывает по пересечению мувингов:

Серега спасибо за ответ!

буду пробовать на твоем шаблоне, а я хотел создать что-то вроде открытия позиции при пересечении ЕМА

и закрытии при пересечении в обратную сторону и так по замкнутому кругу. :wacko:

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Здравствуйте господа программисты и уважаемые трейдеры.

У меня возникла идея, на мой взгляд, очень интересная.

Суть идеи в том чтобы создать советника, который будет мониторить торговлю.

Всем известны факты не чистоплотности различных ДЦ, в частности захват стопов, проскальзывание. На мой взгляд для борьбы с подобными явлениями необходимо создать советника который будет выполнять следующие функции.

1 Закрытие ордера (S/L,T/P ) по запланированной трейдером цене.

2 Открытие ордера (Bay, Sell,Bay Stop, Sell Stop, BayLimit, Sell Limit) по запланированной трейдером цене и достижении цены определенного уровня.

Данный советник даст возможность содержать в тайне ваши намерения относительно торговли. А у ДЦ не будет соблазна захватывать стопы.

Хотелось бы узнать ваше мнение относительно моей идеи. Если кто сможет написать советника , скинте и мне копию.

С уважением Pavel

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте господа программисты и уважаемые трейдеры.

У меня возникла идея, на мой взгляд, очень интересная.

Суть идеи в том чтобы создать советника, который будет мониторить торговлю.

Всем известны факты не чистоплотности различных ДЦ, в частности захват стопов, проскальзывание. На мой взгляд для борьбы с подобными явлениями необходимо создать советника который будет выполнять следующие функции.

1 Закрытие ордера (S/L,T/P ) по запланированной трейдером цене.

2 Открытие ордера (Bay, Sell,Bay Stop, Sell Stop, BayLimit, Sell Limit) по запланированной трейдером цене и достижении цены определенного уровня.

Данный советник даст возможность содержать в тайне ваши намерения относительно торговли. А у ДЦ не будет соблазна захватывать стопы.

Хотелось бы узнать ваше мнение относительно моей идеи. Если кто сможет написать советника , скинте и мне копию.

С уважением Pavel

да написать-то можно что угодно. а смысл?

 

во многих случаях установка уровней используется именно для того, чтобы избежать реквот ДЦ, проскальзывания и прочих прелестей.

Ссылка на комментарий
Поделиться на другие сайты

  • 6 месяцев спустя...

Привет!

Нужно организовать загрузку отчётов на сайт через ftp (на крайний случай можно и через мыло), желательно в .txt. Может быть есть у кого такой советник? Если нет, то как его сделать?

Я - новичок в программировании, так что, если можно, подробнее. Должны отправляться: день открытия счёта, колличество отработанных дней, начальный депо, баланс, эквити, доход. А если с подсчётами, то вообще было бы!..

Надеюсь на помощь, очень нужно.

С уважением.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Привет всем!

Вопрос по поводу MF_Pivot AXEL 0-3255.

Он показывает только сам Pivot (пунктиром). По коду расчёт Pivotа - общий для всех сессий, только выбирается HLC нужного промежутка времени. Добавил код для построения параллельных линий уровней R1, R2, R3 и S1, S2, S3. Получилась ерунда… На рисунке видно. Сейчас я в тупике. Может я пытаюсь сделать невозможное, раз авторы этого не сделали?

С уважением, ЛЮКС.

P.S. Это моё первое сообщение, прошу прощение, если что-то не корректно.

 

http://img225.imageshack.us/img225/191/200808141409ab3.gif

post-20842-1218708519_thumb.png

Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...