[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 924

 
Главное направление мысли задать... :)

Поправь просто, чтобы человек не заблудился... :)

А вы бы не могли мне поправить, просто?
 
T.H.C.:
А вы бы не могли мне поправить, просто?

Я привёл пример:

Если 5 больше 2, то это значит, что 5 больше 2.

А сравнение разницы этих величин - это если 5-2 больше ноля, то значит 5 больше 2

Так надеюсь ясно? Суть-то осталась - всё та же математика первого класса, только производное от неё же...

 
extern double Lot=0.01; // Жестко заданное колич. лотов
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;


bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell

//--------------------------------------------------------------- 3 --
// Учёт ордеров


for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;

if(Total!=0 || time==Time[1])return;

static int KolBars;



if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)


{

KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия

}




// Торговые критерии

// Критерий откр. Buy


Opn_B=true;

//--------------------------------------------------------------- 7 --


if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}

}




Помогите пожалуйста, кто нибудь, прошу уже 4й раз. 3 дня уже на поиски ответа потратил, в книге не написано как это сделать, советников с подобным условием не нашел. Элементарный советник, открывает позицию на покупку при появлении новой свечки (при условии, что предыдущие 2 свечки зеленые), а закрывает позицию при закрытии свечки, на которой была открыта позиция, или на закрытии следующей свечки.

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

 
artmedia70:

Разбирайтесь... :)

И не забудьте о существовании СтопЛевел - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);

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


вообщем составил вроде правильно,но-- "StLev=MarketInfo(Symbol(),MODE_STOPLEVEL);" куда его ставить до меня не дошло,
вот...

дело в том что я на работе постоянно(а мне тут программу mql4 не поставить, и приходиться мне в уме это все проделывать

extern double StopLoss=100.0;
extern double TakeProfit=100.0;
extern double Lots=0.01;
extern int total;
extern int SetOrderDistance=50;

int start() {

int pt,dg,StLev;
double Price_1,Price_2,min,max,pa,pb;
RefreshRates();

pt=MarketInfo(Symbol(),MODE_POINT);
dg=MarketInfo(Symbol(),MODE_DIGITS);
pa=MarketInfo(Symbol(),MODE_ASK);
pb=MarketInfo(Symbol(),MODE_BID);
Price_1=pb;
Price_2=pa;
min=iLow(NULL,0,2);
max=iHigh(NULL,0,2);
total=OrdersTotal();
double slB=NormalizeDouble(pa-StopLoss*pt,dg);
double tpB=NormalizeDouble(pa+TakeProfit*pt,dg);
double slS=NormalizeDouble(pb+StopLoss*pt,dg);
double tpS=NormalizeDouble(pb-TakeProfit*pt,dg);

if(total<1) {

if(Price_1>max)
OrderSend(Symbol(),OP_BUY,Lots,pa,5,slB,tpB,"My order#,16384,0,Green);

if(Price_2<min)
OrderSend(Symbol(),OP_SELL,Lots,pb,5,slS,tpS,"My order#,16384,0,Green);
}
}return(0);

 
T.H.C.:

на скорую руку набросал.Могут быть косяки

#define Mag 464564564
extern double Lot=0.01;

int start()
{
int Total;

for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2&&OrderMagicNumber()==Mag)
       {Total++;
       if(Volume[0]<4)close();
       }

if(Total!=0)return;
if(Close[1]>Open[1]&&Close[2]>Open[2]&&Volume[0]>4)bue();
if(Close[1]<Open[1]&&Close[2]<Open[2]&&Volume[0]>4)sell();

}
void bue()
{
OrderSend(Symbol(),0,Lot,NormalizeDouble(Ask,Digits),5,0,0,0,Mag);
}
//----
void sell()
{
OrderSend(Symbol(),1,Lot,NormalizeDouble(Bid,Digits),5,0,0,0,Mag);
}
void close()
{
double pr;if(OrderType()==0)pr=Bid;if(OrderType()==1)pr=Ask;
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(pr,Digits),5);
}
 
Techno:

на скорую руку набросал.Могут быть косяки

Спасибо большое, очень помог.

Как учился программировать? С чего начинал?

 
T.H.C.:

Спасибо большое, очень помог.

Как учился программировать? С чего начинал?

по учебникам учился, начинал с языка с++
 
А с++ сильно от mql отличается?
 
T.H.C.:
А с++ сильно от mql отличается?
за исключением некоторых особенностей(торговую ориентацию) Mql это просто сильно урезанная копия с++
 
Techno:
за исключением некоторых особенностей(торговую ориентацию) Mql это просто сильно урезанная копия с++
О, благодарствую за советы и уделенное на меня время
Причина обращения: