Light Style© by Fisana

Перейти к содержимому


NordFX MT-ECN. Межбанковские спреды от 0 пунктов и низкие комиссии. ECN торговля в знакомом терминале!


NordFX

www.teletrade.ru

Фотография

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


  • Пожалуйста, авторизуйтесь, чтобы ответить
202 ответов в этой теме

#16 Shu

Shu

    Option Trader

  • РЕКТОРАТ
  • PipPipPipPipPip
  • 1 897 сообщений

Опубликовано 05 Ноябрь 2007 - 03:41

...
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:

#17 Vyalko

Vyalko

    пробегал

  • Пользователи
  • Pip
  • 5 сообщений

Опубликовано 08 Ноябрь 2007 - 07:15

Здравствуйте. Есть обычный советник на пересечении двух мувингов. Я добавил еще один, и хочу дополнить его фильтром на основе индикатора 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, 08 Ноябрь 2007 - 07:19 .


#18 Shu

Shu

    Option Trader

  • РЕКТОРАТ
  • PipPipPipPipPip
  • 1 897 сообщений

Опубликовано 08 Ноябрь 2007 - 11:48

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

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

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

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

#19 Vyalko

Vyalko

    пробегал

  • Пользователи
  • Pip
  • 5 сообщений

Опубликовано 08 Ноябрь 2007 - 03:04

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

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


У меня не получается прикрепить файл, поэтому выложу код.
Открытие и закрытие позиций на покупку происходит правильно. А вот на продажу- или не открывает, или отроет и тут же закроет раз сто. Что только не менял не получалось зделать нормально.
Я думаю, что слишком просто я его вставил, а по другому не умею.
Принцип пересечения трех мувингов с фильтрацией каким то индикатором мне понравился, поэтому и хочу довести до ума.
Ссылка на индюк http://www.fxexpert....o...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);
}

#20 Vyalko

Vyalko

    пробегал

  • Пользователи
  • Pip
  • 5 сообщений

Опубликовано 11 Ноябрь 2007 - 02:53

Привет всем.
Помогите реализовать идею. Есть простенький советник на пересечении двух мувингов. Хочу фильтровать индикатором по следующему принципу:
1вариант//мувинги подали сигнал на покупку. Индикатор в этот момент находится ниже нуля, но его цвет зеленый. Результат= разрешить покупку
2 вариант// мувинги подали сигнал на покупку. Индикатор в этот момент находится выше нуля, но его цвет красный. Результат= не разрешать покупку.
3вариант//Самый обычный: мувинги- на покупку и индикатор выше нуля. Результат= разрешить покупку.
Закрытие ордеров хорошо бы реализовать через такую же логику. Но если не получится, то любой вариант.
Индикатор может быть любая двухцветная гистограмма. Я выбрал этот. Он не сильно опаздывает, а вот насчет перерисовки - не знаю. Если у вас есть лучший индикатор- используйте его.
У меня не получился советник. Слабоват я еще в них

Вложенные файлы


Сообщение изменено: Vyalko, 11 Ноябрь 2007 - 02:55 .


#21 Liv

Liv

    живет тут

  • Модератор
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 18 Ноябрь 2007 - 12:37

Я извиняюсь, что из-за своей занятости не могу посвятить вам много времени!
Быстро просмотрел советник, хороший и даже работает... но: :)
по моему мнению не верно открываются ордера:
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);
Удачи!

#22 Vyalko

Vyalko

    пробегал

  • Пользователи
  • Pip
  • 5 сообщений

Опубликовано 18 Ноябрь 2007 - 12:58

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

#23 MDM

MDM

    записался

  • Пользователи ST test (off)
  • PipPip
  • 17 сообщений

Опубликовано 18 Ноябрь 2007 - 09:36

привет 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.

#24 _Серега_

_Серега_

    записался

  • Пользователи ST test (off)
  • PipPip
  • 32 сообщений

Опубликовано 18 Ноябрь 2007 - 03:09

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);}

}
}
И не думать - как приземлится, а у птиц свободе учиться - лететь, оставив - все то что жаль... (A-MЕГА)

#25 MDM

MDM

    записался

  • Пользователи ST test (off)
  • PipPip
  • 17 сообщений

Опубликовано 18 Ноябрь 2007 - 05:42

[quote name='_Серега_' date='18.11.2007, 18:12' post='246043']
MDM Сегодня, 13:39 Условие сравнения мувингов не вырабатывает сигнал -то есть не возникает ситуации, когда само условие в блоке if является истинным.
Не знаю, что в условии имелось ввиду - возможно просто не правильно составлено выражение в блоке if, но что должно быть опять же неизвестно, поскольку не описано негде, по этому точнее сказать не могу.
Совет - отлаживайте работу через функцию Comment, то есть если условие возникает - тогда пусть оно выведет сообщение - можно быстренько прогнать по графику и если хоть когда нибудь что то сработает на экране останется коментарий - это удобно для отладки.
MDM Сегодня, 13:39
Вот кстатьи - когда то тож делал такой советник - просмотрите и попробуйте использовать его, как шаблон для своей работы - как раз отрабатывает по пересечению мувингов:
Серега спасибо за ответ!
буду пробовать на твоем шаблоне, а я хотел создать что-то вроде открытия позиции при пересечении ЕМА
и закрытии при пересечении в обратную сторону и так по замкнутому кругу. :wacko:

#26 pavelfx9

pavelfx9

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 148 сообщений

Опубликовано 07 Декабрь 2007 - 07:05

Здравствуйте господа программисты и уважаемые трейдеры.
У меня возникла идея, на мой взгляд, очень интересная.
Суть идеи в том чтобы создать советника, который будет мониторить торговлю.
Всем известны факты не чистоплотности различных ДЦ, в частности захват стопов, проскальзывание. На мой взгляд для борьбы с подобными явлениями необходимо создать советника который будет выполнять следующие функции.
1 Закрытие ордера (S/L,T/P ) по запланированной трейдером цене.
2 Открытие ордера (Bay, Sell,Bay Stop, Sell Stop, BayLimit, Sell Limit) по запланированной трейдером цене и достижении цены определенного уровня.
Данный советник даст возможность содержать в тайне ваши намерения относительно торговли. А у ДЦ не будет соблазна захватывать стопы.
Хотелось бы узнать ваше мнение относительно моей идеи. Если кто сможет написать советника , скинте и мне копию.
С уважением Pavel
ЧЁТКО ПОСТАВЛЕННАЯ ЗАДАЧА - ПОЛОВИНА УСПЕХА!

#27 Shu

Shu

    Option Trader

  • РЕКТОРАТ
  • PipPipPipPipPip
  • 1 897 сообщений

Опубликовано 07 Декабрь 2007 - 09:03

Здравствуйте господа программисты и уважаемые трейдеры.
У меня возникла идея, на мой взгляд, очень интересная.
Суть идеи в том чтобы создать советника, который будет мониторить торговлю.
Всем известны факты не чистоплотности различных ДЦ, в частности захват стопов, проскальзывание. На мой взгляд для борьбы с подобными явлениями необходимо создать советника который будет выполнять следующие функции.
1 Закрытие ордера (S/L,T/P ) по запланированной трейдером цене.
2 Открытие ордера (Bay, Sell,Bay Stop, Sell Stop, BayLimit, Sell Limit) по запланированной трейдером цене и достижении цены определенного уровня.
Данный советник даст возможность содержать в тайне ваши намерения относительно торговли. А у ДЦ не будет соблазна захватывать стопы.
Хотелось бы узнать ваше мнение относительно моей идеи. Если кто сможет написать советника , скинте и мне копию.
С уважением Pavel

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

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

#28 Лена 3

Лена 3

    записался

  • Пользователи
  • PipPip
  • 35 сообщений

Опубликовано 05 Июль 2008 - 10:52

Привет!
Нужно организовать загрузку отчётов на сайт через ftp (на крайний случай можно и через мыло), желательно в .txt. Может быть есть у кого такой советник? Если нет, то как его сделать?
Я - новичок в программировании, так что, если можно, подробнее. Должны отправляться: день открытия счёта, колличество отработанных дней, начальный депо, баланс, эквити, доход. А если с подсчётами, то вообще было бы!..
Надеюсь на помощь, очень нужно.
С уважением.

#29 serega12

serega12

    пробегал

  • Пользователи
  • Pip
  • 9 сообщений

Опубликовано 09 Август 2008 - 05:30

Может кому-нибудь пригодится из EX4 в MQ4. Для проверки можете покласть код.
Подробности письмом ershangey@mail.ru.

#30 ЛЮКС

ЛЮКС

    пробегал

  • Пользователи ST test (off)
  • Pip
  • 4 сообщений

Опубликовано 14 Август 2008 - 10:16

Привет всем!
Вопрос по поводу MF_Pivot AXEL 0-3255.
Он показывает только сам Pivot (пунктиром). По коду расчёт Pivotа - общий для всех сессий, только выбирается HLC нужного промежутка времени. Добавил код для построения параллельных линий уровней R1, R2, R3 и S1, S2, S3. Получилась ерунда… На рисунке видно. Сейчас я в тупике. Может я пытаюсь сделать невозможное, раз авторы этого не сделали?
С уважением, ЛЮКС.
P.S. Это моё первое сообщение, прошу прощение, если что-то не корректно.

Размещенное изображение

Вложенные превью

  • 2008.08.14__14.09.gif





Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей

Рейтинг брокеров форекс: кто лидер, кто аутсайдер и почему?




Masterforex-V NordFX

Rambler's Top100

Принимаем Z-Payment