Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Можно научить советник не закрывать чужие ордеры? Хочется погонять его на реале. Но он закрывает мои ордеры если наши направления не сходятся.
Можно.
Найди в программе процедуры ClossAllProfitSell(), ClossAllLossSell(), ClossAllProfitBuy(), ClossAllLossBuy(). В каждой из них найди строчку, заканчивающуюся на continue. После этой строчки вставь строку:
if (OrderMagicNumber()!=mn) continue;
Точка с запятой в конце строки обязательна!
Сегодня проверил. Работает.
Спасибо, попробую
В нынешнем виде этот стейт - фикция. Решение об октрытии ордера принмается ВНУТРИ бара, а не на открытии, а следовательно - на синтетических тиках тестера. Месяц прогонки алгоритма на демо не дал никакого прироста депо, просадки на новостных скачках евры чудовищные. Нужно дорабатывать однозначно.
Не всё так плохо. У меня этот советник стоит на реале с 23 июля. Тест по истории совпадает с реальным стейтом. Это первое.
Второе. Если тестировать советника только на 2012 году, видно, что есть удачные и неудачные месяцы. Угроза слива в январе-феврале, нулевой результат за март-апрель, удачные май-июнь, и снова плохой июль. Как-то так.
А насчёт дорабатывать - есть какие-то мысли на этот счёт? Что можно добавить или переделать? Я не автор, но мне этот советник нравится. Хочется, чтобы он и доход приносил.
Подводим итоги.
Июль - закрылся в ноль почти (примерно минус 1 процент). Гонял версию со СЛ, часто срабатывали.
Посмотрим на август.
Подводим итоги.
Июль - закрылся в ноль почти (примерно минус 1 процент). Гонял версию со СЛ, часто срабатывали.
Посмотрим на август.
Кто может изменить последний код, что бы советник работал отложенными ордерами (sell limit bailimit), алгоритм оставить тот же, растояние в пунктах до отложенного ордера вынести в настройки для тестирования, просадки можно будет уменьшить намного, пусть некоторые ордера не сработают, зато просабдок меньше будет?
Последняя версия с учетом пожеланий, с лимитниками поэкспериментирую. Настройки для пятизначных ДЦ.
Приветствую! Читал эмоции по поводу советника! Они удалены. "Умников" много.Кто кидается терминами, в итоги знает только верхушки.А вообще смотрю, на этом сайте только обхаить могут, а предложить, очень мало. Поэтому предлагаю ниже. Прогнал за 3 месяца. Сделки открывает редко. На GBPUSD. Все урезаное и навалом. Грамотные люди распишут. Код вообще не трогал.Хотя и так работает.Только ZUP надо найти.
int Balans =AccountBalance();
double TP=Bid - tp * Point;
//---- Для оптимизации убираем "пустые" варианты
if (Time[0] == prevtime) return(0);
prevtime = Time[0];
if (! IsTradeAllowed()) {
prevtime = Time[1];
MathSrand(TimeCurrent());
Sleep(30000 + MathRand());
}
datetime some_time;
int bigshift, i;
//======== получение данных с индикаторов и текущей цены ======================
{//1
for( i=0; i<=12-1; i++)
{
int tp = 100;
int total=0;
bool Buy_on;
bool Sell_on;
Buy_on = FALSE;
Sell_on = FALSE;
int timef = 12;
some_time=iTime(NULL,0,i);
bigshift=iBarShift(NULL,1440,some_time);
double P3;
MA_1_t=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0); // МА_1 текущая
MA_1_p=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,1); // МА_1 текущая
TimeBar_t = (TimeCurrent()-Time[0])/60; // время в минутах с открытия свечи
sv_close = iClose(NULL,0,1); // цена закрытия свечи на предыдущем баре
PA = Bid; // получение текущей цены
P3=iClose(Symbol(),1440,2) - iCustom(NULL,240,"ZUP",5,0,bigshift);
total= OrdersTotal();
Sell_on=NewSell;
//---
RefreshRates ();
}}//1
static datetime sd;
if ( CurTime()-sd>timef*60*Period() )
{
// ================= Обработка сигналов ===============================
{//2
if ((PA < MA_1_t) && (MA_1_t < MA_1_p) && (PA < sv_close) && (TimeBar_t==TimeBarOpen)&& P3<-0.1 && P3<0) NewBuy = 1; else NewBuy = 0; // && P3<0.1 && P3>0
if ((PA > MA_1_t) && (MA_1_t > MA_1_p) && (PA > sv_close) && (TimeBar_t==TimeBarOpen)&& P3<0.1 && P3>0) NewSell = 1; else NewSell = 0; // && P3<-0.1 && P3<0
}//2
// ================= Открытие сделки ===================================
{//3
if (total<5){Sell_on = FALSE;}
if (OrdersProfitSell()>Balans){NewSell = 1;}
if ((NewBuy == 1) && (ExistPositions() == false)) OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,0,0,GetNameOP,mn,0,LightSkyBlue);
// открытие Sell
if ((NewSell == 1) && (ExistPositions() == false)) OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,0,TP,GetNameOP,mn,0,HotPink);
}}
Comment("Работаем :)",
"\n P3 =",P3,
"\n Oрдер =",total,
"\n Прибыль Sell =",OrdersProfitSell()
); // Комментарий в угол окна
// ================= Закрытие сделки ===================================
{//4
if (NewBuy == 1)
{
ClossAllProfitSell ();
ClossAllLossSell();
}
if (NewSell == 1)
{
ClossAllProfitBuy ();
ClossAllLossBuy();
}
}//4
// ================= Комментарии ======================================
{//5
Comment("Работаем :)",
"\n P3 =",P3,
"\n Oрдер =",total,
"\n Прибыль Sell =",OrdersProfitSell()
); // Комментарий в угол окна
}//5
// =====================================================================
return(0);
}//0
double OrdersProfitSell()
{
double rezultSymb=0;
string SYM=Symbol();
int i;
for (i=OrdersTotal()-1;i>=0;i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol()!= SYM) continue;
if(OrderType()==OP_SELL)
{
rezultSymb+=OrderProfit();
}
}
}
return(rezultSymb);
}
Приветствую! Читал эмоции по поводу советника! Они удалены. "Умников" много.Кто кидается терминами, в итоги знает только верхушки.А вообще смотрю, на этом сайте только обхаить могут, а предложить, очень мало. Поэтому предлагаю ниже. Прогнал за 3 месяца. Сделки открывает редко. На GBPUSD. Все урезаное и навалом. Грамотные люди распишут. Код вообще не трогал.Хотя и так работает.Только ZUP надо найти.
Спасибо администраторам!!! Кое-что забыл. NewSell у меня и близко нет,меня подкоректировали. Забыл, честное слово.
int NewBuy = TotalBuy(Magic555);
int NewSell= TotalSell(Magic666);
int TotalBuy(int magic_R) {
int A = 0;
for (int position = 0; position < OrdersTotal(); position++) {
if (!(OrderSelect(position, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic_R && OrderType() == OP_BUY) A++;
}
return (A);
}
int TotalSell(int magic_R) {
int B = 0;
for (int position = 0;position < OrdersTotal(); position++) {
if (!(OrderSelect(position, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic_R && OrderType() == OP_SELL) B++;
}
return (B);
}
Точно будет работать.
Также немножко изменить, можно применить и к BUYSTOP и к BUYLIMIT .
А ZUP, брал на этом сайте, ZUP_V60.