Зачем убрали. Если бы оставили, то все бы работало
Поставил этой таинственный знак ...... но результат тот же ...функция не работает
bool isCloseLastPosByStop(string sy, int op, int mn, double& ll)
{
double pt;
datetime t;
int dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
Теперь при компиляции выдает ошибку.... что переменная Lot не опредена.
' ' - variable not defined C:\Program Files\Alpari NZ MT4\experts\ПРЕДЫД СВЕЧА.mq4 (47, 39) http://clip2net.com/s/61vFZH
Хотя ее определил перед Start.
double Magic, Lot;
int start()
{
double Price=iOpen (Symbol (),0,0);
int last_order_bar = 0;
int ot = OrdersTotal();
if (ot>0) //если есть ордера в рынке
{
if (OrderSelect (ot-1,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
int last_hist_order_bar = 0;
int oht = OrdersHistoryTotal();
if (oht>0)
{
if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
if (ot==0)
//if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре // if (oht==0 || last_hist_order_bar>0) if (Bid ==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================Lot= MarketInfo(Symbol(), MODE_MINLOT); if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//============================================================ bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
{
double pt;
datetime t;
int dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
double Magic, Lot;
int start()
{
double Price=iOpen (Symbol (),0,0);
int last_order_bar = 0;
int ot = OrdersTotal();
if (ot>0) //если есть ордера в рынке
{
if (OrderSelect (ot-1,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
int last_hist_order_bar = 0;
int oht = OrdersHistoryTotal();
if (oht>0)
{
if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
if (ot==0)
//if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре // if (oht==0 || last_hist_order_bar>0) if (Bid ==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
Lot= MarketInfo(Symbol(), MODE_MINLOT);
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//============================================================ bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
{
double pt;
datetime t;
int dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
Теперь при компиляции выдает ошибку.... что переменная Lot не опредена.
' ' - variable not defined C:\Program Files\Alpari NZ MT4\experts\ПРЕДЫД СВЕЧА.mq4 (47, 39) http://clip2net.com/s/61vFZH
Хотя ее определил перед Start.
Компилируется. Мне кажется - логика у вас там совсем хромая... Я её, естественно, не смотрел. Проверил только на ошибки.
double Magic, Lot;
int start() {
double Price=iOpen(Symbol(),0,0);
int last_order_bar=0;
int ot=OrdersTotal();
if (ot>0) {
if (OrderSelect(ot-1,SELECT_BY_POS))
if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_order_bar=iBarShift(Symbol(),0,OrderOpenTime());
}
int last_hist_order_bar=0;
int oht=OrdersHistoryTotal();
if (oht>0) {
if (OrderSelect(oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) last_hist_order_bar=iBarShift(Symbol(),0,OrderOpenTime())
}
if (ot==0)
if (Bid==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
Lot=MarketInfo(Symbol(), MODE_MINLOT);
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot)) {
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else {
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//+----------------------------------------------------------------------------+bool isCloseLastPosByStop(string sy, int op, int mn, double &ll) {
double pt;
int t, dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())<0.5*pt) { // Если закрыт по стопу
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
//+----------------------------------------------------------------------------+
Зачем убрали. Если бы оставили, то все бы работало
Поставил этой таинственный знак ...... но результат тот же ...функция не работает
Интересно ..... а что означает этот знак.... в учебнике по поводу него я ничего не могу припомнить.
Передача по ссылке, позволяет модифицировать (изменять) параметр
Передача по ссылке, позволяет модифицировать (изменять) параметр
Спасибо.Учту на будущее.
Но почему не работает функция?
Буду Вам признателен,если наставите меня на путь истинный.Спасибо.Учту на будущее.
Но почему не работает функция?
Буду Вам признателен,если наставите меня на путь истинный.Минимальный лот еще верните
Минимальный лот еще верните
Вернул.
Теперь при компиляции выдает ошибку.... что переменная Lot не опредена.
' ' - variable not defined C:\Program Files\Alpari NZ MT4\experts\ПРЕДЫД СВЕЧА.mq4 (47, 39)
http://clip2net.com/s/61vFZH
Хотя ее определил перед Start.
Вернул.
Теперь при компиляции выдает ошибку.... что переменная Lot не опредена.
' ' - variable not defined C:\Program Files\Alpari NZ MT4\experts\ПРЕДЫД СВЕЧА.mq4 (47, 39)
http://clip2net.com/s/61vFZH
Хотя ее определил перед Start.
Мне нужен весь код
Мне нужен весь код
Мне нужен весь код
Мне нужно что бы после того как ордер закрылся по стопу следующий ордер открылся объемом равным объему который был в ПОСЛЕДНЕМ закрытом по стопу
ордере умноженном на 2
А если ПОСЛЕДНИЙ ордер закрылся по другой причине(не по стопу) - объем позиции должен быть 0.1Вернул.
Теперь при компиляции выдает ошибку.... что переменная Lot не опредена.
' ' - variable not defined C:\Program Files\Alpari NZ MT4\experts\ПРЕДЫД СВЕЧА.mq4 (47, 39)
http://clip2net.com/s/61vFZH
Хотя ее определил перед Start.
Компилируется. Мне кажется - логика у вас там совсем хромая... Я её, естественно, не смотрел. Проверил только на ошибки.
datetime - это тот же int