[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 144

 
где-то на этом сайте давно встречал ссылку на сайт на который можно закачать своего робота, так же прописать логин, пароль, сервер и он будет торговать при выключенном моём копме.... никто не припомнит этот сайт?
 
jobber:
где-то на этом сайте давно встречал ссылку на сайт на который можно закачать своего робота, так же прописать логин, пароль, сервер и он будет торговать при выключенном моём копме.... никто не припомнит этот сайт?

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

LazarevDenis

Изначально считается 59 баров, что неправильно. В минутках могут пропуски, да и последний часовой бар в себе меньше минуток может содержать.

Нужно брать время открытия и закрытия часового бара (Time[i]). По этому времени делать расчет смещений для минуток iBarShift, а вот затем уже вычислять максимум в этом диапазоне смещений.

Кстати что индикатор должен показывать на минутном периоде?

Хотя для советника неважно, ему достаточно получать последнее значение на минутках, если число положительное цена идет вверх, если отрицательное вниз, вернув число по модулю узнаем силу движения.


по поводу колличества баров - их 60 отсчет идет с нуля, и 60 минуты нету, т.к. это нулевая минута нового часа, или я ошибаюсь

на счет последнего часового бара у меня сомнения, но надеюсь что раз не минутных баров вообще, то их обьем равен нулю и на результат вычислений они не влияют

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

 
LazarevDenis:


по поводу колличества баров - их 60 отсчет идет с нуля, и 60 минуты нету, т.к. это нулевая минута нового часа, или я ошибаюсь

на счет последнего часового бара у меня сомнения, но надеюсь что раз не минутных баров вообще, то их обьем равен нулю и на результат вычислений они не влияют

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


Написать или свой код предоставите?
 
Vinin:

Написать или свой код предоставите?
немного не понял что написать?
код индикатора на прошлой странице, а советника я сам допишу, когда удостоверюсь, что индикатор нормально работает, спасибо
 
//+------------------------------------------------------------------+
//| FT_Fractal_MA.mq4 |
//| FORTRADER.RU, Юрий, ftyuriy@gmail.com |
//| http://FORTRADER.RU, Фракталы + Средние |
//+------------------------------------------------------------------+
#property copyright "FORTRADER.RU, Юрий, ftyuriy@gmail.com"
#property link "http://FORTRADER.RU, Фракталы + Средние"

/*Разработано для 49 выпуска журнала FORTRADER.Ru. Система по фракталам и средней.
Обсуждение: http://fxnow.ru/group_discussion_view.php?group_id=49&grouptopic_id=266&grouppost_id=2667#post_2667
Архив журнала: http://www.fortrader.ru/arhiv.php
49 выпуск: http://www.fortrader.ru/
*/

extern int lwmaper1=4;
extern int lwmaper2=8;

extern int lwmapertrend=40;
extern int lwmatrendchart=1;

extern int SL=150;
extern int TP=150;

extern int mn=1;

int err;

extern int MG=564651;
extern double Lots=0.01;

extern int maxpos=1;

int bars;
int start()
{
if(bars!=Bars)
{
bars=Bars;
OpenPattern();
}
return(0);
}

int okbuy,oksell;

int OpenPattern()
{
double op,sl,tp;
double upf=iFractals(NULL, 0, MODE_UPPER, 3);
double dwf=iFractals(NULL, 0, MODE_LOWER, 3);
double lwma1=iMA(NULL,0,lwmaper1,0,MODE_LWMA,PRICE_CLOSE,1);
double lwma2=iMA(NULL,0,lwmaper2,0,MODE_LWMA,PRICE_CLOSE,1);
double lwma1Last=iMA(NULL,0,lwmaper1,0,MODE_LWMA,PRICE_CLOSE,2);
double lwma2Last=iMA(NULL,0,lwmaper2,0,MODE_LWMA,PRICE_CLOSE,2);
double lwmatrend=iMA(NULL,GetPeriod(lwmatrendchart),lwmapertrend,0,MODE_LWMA,PRICE_CLOSE,1);
double lwmatrendLast=iMA(NULL,0,GetPeriod(lwmatrendchart),0,MODE_LWMA,PRICE_CLOSE,2);
if(upf!=0){oksell=1;okbuy=0;}
if(dwf!=0){okbuy=1;oksell=0;}
if(oksell==1 && lwma1<lwma2 && lwma1Last>lwma2Last && CountPos(0)<maxpos && lwmatrend>lwmatrendLast)
{
op=Bid;if(SL>0){sl=Bid+SL*Point*mn;}if(TP>0){tp=Bid-TP*Point*mn;}
err=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red);
if(err<0){Print("OrderSend()- Ошибка OP_SELL. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
oksell=0;
}
if(okbuy==1 && lwma1>lwma2 && lwma1Last<lwma2Last && CountPos(1)<maxpos && lwmatrend<lwmatrendLast)
{
op=Ask;if(SL>0){sl=Ask-SL*Point*mn;}if(TP>0){tp=Ask+TP*Point*mn;}
err=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red);
if(err<0){Print("OrderSend()- Ошибка OP_BUY. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
okbuy=0;
}
return(err);
}
//Проверяем количесвто позиций.
int CountPos(int type)
{//Описание http://fxnow.ru/blog.php?user=Yuriy&amp;blogentry_id=66

int i;
int col;
int count=0 ;
for( i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MG){count++;}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MG){count++;}
}
}
return(count);
}

int GetPeriod(int GrafOpen)
{int GrafOpenT;
switch(GrafOpen)
{
case 1: GrafOpenT=1;break;
case 2: GrafOpenT=5;break;
case 3: GrafOpenT=15;break;
case 4: GrafOpenT=30;break;
case 5: GrafOpenT=60;break;
case 6: GrafOpenT=240;break;
case 7: GrafOpenT=1440;break;
default: GrafOpenT=1;break;
}
return(GrafOpenT);

}

Поменяйте, пожалуйста, в этом советнике с этого сайта местами buy и sell, а то у меня не получается. Интересно проверить, а то уж больно ровно сливает пилой.

 
LazarevDenis:


по поводу колличества баров - их 60 отсчет идет с нуля, и 60 минуты нету, т.к. это нулевая минута нового часа, или я ошибаюсь

Я сейчас глупый вопрос задам, сколько дневных баров в году?
 

Доброй Ночи.. утра.. а может и дня..

Пытаюсь освоить mql язык.. столкнулся с непониманием.. Суть проблемы есть код:

      OrderSelect(ТикетСелл,SELECT_BY_TICKET);
      double СеллТейкПрофит=ЦенаПродажи-(ЦенаПокупки-ЦенаПродажи);
      PrintDoubleToStr("OrderOpenPrice()= ",OrderOpenPrice(),8);PrintDoubleToStr("ЦенаПродажи= ",ЦенаПродажи,8);
      PrintDoubleToStr("OrderStopLoss()= ",OrderStopLoss(),8);PrintDoubleToStr("ЦенаПокупки= ",ЦенаПокупки,8);
      PrintDoubleToStr("OrderTakeProfit()= ",OrderTakeProfit(),8);PrintDoubleToStr("СеллТейкПрофит= ",СеллТейкПрофит,8);
      Print(OrderType(),"=",OP_SELLSTOP);
      if((OrderType()==OP_SELLSTOP) && ((OrderOpenPrice()!=ЦенаПродажи)||(OrderStopLoss()!=ЦенаПокупки)||(OrderTakeProfit()!=СеллТейкПрофит)))
      {
         OrderModify(OrderTicket(),ЦенаПродажи,ЦенаПокупки,СеллТейкПрофит,0,Red);
      }

Функция "PrintDoubleToStr" выводит double числа в журнал..

Вообщем в журнале у меня (Читать с низу вверх)

2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderModify error 1
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: 5=5
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: СеллТейкПрофит= 1.41884000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderTakeProfit()= 1.41884000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: ЦенаПокупки= 1.44244000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderStopLoss()= 1.44244000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: ЦенаПродажи= 1.43064000
2011.09.04 22:56:36	2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderOpenPrice()= 1.43064000

Вот и возникает вопрос: какого он лезит модифицировать ордер если все значения равны и соответственно вот это условие не выполнено:

if((OrderType()==OP_SELLSTOP) && ((OrderOpenPrice()!=ЦенаПродажи)||(OrderStopLoss()!=ЦенаПокупки)||(OrderTakeProfit()!=СеллТейкПрофит)))
Подскажите пожалуйста, где я лоханулся..
 
niknikolas:

Подскажите пожалуйста, где я лоханулся..

Рыбу не наловлю, но удочку дам.. можно еще строчки добавить Print(OrderOpenPrice()!=ЦенаПродажи) и картина будет полной и достаточной для самостоятельных выводов.
 
splxgf:
Рыбу не наловлю, но удочку дам.. можно еще строчки добавить Print(OrderOpenPrice()!=ЦенаПродажи) и картина будет полной и достаточной для самостоятельных выводов.

Как говорится "Каша из топора.." мне б еще червячка... Вообщем код теперь :

OrderSelect(ТикетСелл,SELECT_BY_TICKET);
double СеллТейкПрофит=ЦенаПродажи-(ЦенаПокупки-ЦенаПродажи);
Print("OrderOpenPrice()!=ЦенаПродажи= ",OrderOpenPrice()!=ЦенаПродажи);
Print("OrderStopLoss()!=ЦенаПокупки= ",OrderStopLoss()!=ЦенаПокупки);
Print("OrderTakeProfit()!=СеллТейкПрофит= ",OrderTakeProfit()!=СеллТейкПрофит);
PrintDoubleToStr("OrderTakeProfit()= ",OrderTakeProfit(),8);
PrintDoubleToStr("СеллТейкПрофит   = ",СеллТейкПрофит,8);
if((OrderType()==OP_SELLSTOP) && ((OrderOpenPrice()!=ЦенаПродажи)||(OrderStopLoss()!=ЦенаПокупки)||(OrderTakeProfit()!=СеллТейкПрофит)))
{
 OrderModify(OrderTicket(),ЦенаПродажи,ЦенаПокупки,СеллТейкПрофит,0,Red);
}
В журнале:
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderModify error 1
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: СеллТейкПрофит   = 1.42505000
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderTakeProfit()= 1.42505000
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderTakeProfit()!=СеллТейкПрофит= 1
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderStopLoss()!=ЦенаПокупки= 0
2011.09.05 00:21:32     2011.08.01 00:00  Прямоугольник EURUSD,H1: OrderOpenPrice()!=ЦенаПродажи= 0

Почему при " СеллТейкПрофит = 1.42505000" и при " OrderTakeProfit()= 1.42505000" все равно " OrderTakeProfit()!=СеллТейкПрофит= 1"

вообщем нЕпОнЯтнО..
Причина обращения: