Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

Страница 1 из 512345»
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Помощь с советником (Дополнение к существующей программе)
Помощь с советником

amidtverДата: Четверг, 12.09.2013, 15:16 | Сообщение # 1
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 6
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Нужен срочно советник.
Работа не долгая, а именно:

Есть такой код программы (см. ниже) которая закрывает все прибыльные ордера ( профит можно настраивать) и
как только ордер закрывается открывает новый идентичный. Нужно модернизировать этот код следующим образом:
Нужно что бы советник не просто тупо открывал новый ордер после закрытия предыдущего, а понимал следующее:

После закрытия ордера BUY или SELL искал есть ли уже существующий открытый ордер на BUY на расстоянии скажем 15 пунктов от тек. цены
(этот параметр так же нужно сделать настраиваемым). Если нет такого ордера, то открываем идентичный только что закрытому ордеру.
Если ордер найден, то ищем SELL ордер. Если ордер найден на расстоянии 15 пунктов от тек. цены то ничего не делаем и открываем идентичный SELL если ордер не найден

Примечание: никаких стопов и тейкпрофитов делать не нужно. Должно быть только 2 настраиваемых параметра - тот который уже есть и тот,
который нужно дописать.

Код
extern int Profit=1;
void start()
{
int slippage=3;
int ask, bid, open;
double point;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY)
{
point=MarketInfo(OrderSymbol(),MODE_POINT);
if (point==0) break;
bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
open=MathRound(OrderOpenPrice()/point);
if (bid-open<Profit) continue;
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
OrderSend(Symbol(), OP_BUY, 0.12, 1.5, 3, 0, 0, NULL, 0, 0, CLR_NONE);

}
if (OrderType()==OP_SELL)
{
point=MarketInfo(OrderSymbol(),MODE_POINT);
if (point==0) break;
ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
open=MathRound(OrderOpenPrice()/point);
if (open-ask<Profit) continue;
OrderClose (OrderTicket(),OrderLots(),ask*point,slippage);
OrderSend(Symbol(), OP_SELL, 0.12, 1.5, 3, 0, 0, NULL, 0, 0, CLR_NONE);
}
}
}

 
СообщениеНужен срочно советник.
Работа не долгая, а именно:

Есть такой код программы (см. ниже) которая закрывает все прибыльные ордера ( профит можно настраивать) и
как только ордер закрывается открывает новый идентичный. Нужно модернизировать этот код следующим образом:
Нужно что бы советник не просто тупо открывал новый ордер после закрытия предыдущего, а понимал следующее:

После закрытия ордера BUY или SELL искал есть ли уже существующий открытый ордер на BUY на расстоянии скажем 15 пунктов от тек. цены
(этот параметр так же нужно сделать настраиваемым). Если нет такого ордера, то открываем идентичный только что закрытому ордеру.
Если ордер найден, то ищем SELL ордер. Если ордер найден на расстоянии 15 пунктов от тек. цены то ничего не делаем и открываем идентичный SELL если ордер не найден

Примечание: никаких стопов и тейкпрофитов делать не нужно. Должно быть только 2 настраиваемых параметра - тот который уже есть и тот,
который нужно дописать.

Код
extern int Profit=1;
void start()
{
int slippage=3;
int ask, bid, open;
double point;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY)
{
point=MarketInfo(OrderSymbol(),MODE_POINT);
if (point==0) break;
bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
open=MathRound(OrderOpenPrice()/point);
if (bid-open<Profit) continue;
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
OrderSend(Symbol(), OP_BUY, 0.12, 1.5, 3, 0, 0, NULL, 0, 0, CLR_NONE);

}
if (OrderType()==OP_SELL)
{
point=MarketInfo(OrderSymbol(),MODE_POINT);
if (point==0) break;
ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
open=MathRound(OrderOpenPrice()/point);
if (open-ask<Profit) continue;
OrderClose (OrderTicket(),OrderLots(),ask*point,slippage);
OrderSend(Symbol(), OP_SELL, 0.12, 1.5, 3, 0, 0, NULL, 0, 0, CLR_NONE);
}
}
}

Автор - amidtver
Дата добавления - 12.09.2013 в 15:16

expforexДата: Четверг, 12.09.2013, 16:13 | Сообщение # 2
Главный Администартор
Группа: Администраторы
Сообщений: 9040
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Хорошо смотрите

функция которая ищет ближайший к текущей цене ордер(позицию)



Код
int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
   double d, p;
   int i, k=OrdersTotal(), r=1000000;

   if (sy=="" || sy=="0") sy=Symbol();
   p=MarketInfo(sy, MODE_POINT);
   if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
   for (i=0; i<k; i++) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
         if (mn<0 || OrderMagicNumber()==mn) {
           if (OrderType()==OP_BUY) {
             d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
             if (r>d) r=NormalizeDouble(d, 0);
           }
           if (OrderType()==OP_SELL) {
             d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
             if (r>d) r=NormalizeDouble(d, 0);
           }
         }
       }
     }
   }
   return(r);
}


в Вашем случае надо сделать так:


Код
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);  
OrderSend(Symbol(), OP_BUY, 0.12, 1.5, 3, 0, 0, NULL, 0, 0, CLR_NONE);
 
заменить на:

Код
double lots= OrderLots();
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);  
if(DistMarketAndPos(Symbol(),-1,-1)>Distance)OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL, 0, 0, CLR_NONE);
 

Во первых - новый ордер откроется с предыдущим лотом, а не как у Вас с лотом 0.12
в вторых он откроется, потому что у вас цена грубо говоря не стояла
в третьих новый ордер откроется ТОЛЬКО если не будет на расстоянии 15 пунктов вблизи от текущей цены - никакой позиции ни бай ни селл.

полный код выглядит так:
Код
//+------------------------------------------------------------------+
extern int Profit=1;
extern int Distance=15;
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
void start()
   {
    int slippage=3;
    int ask,bid,open;
    double point;
    for(int i=OrdersTotal()-1; i>=0; i--)
      {
       if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
       if(OrderType()==OP_BUY)
         {
          point=MarketInfo(OrderSymbol(),MODE_POINT);
          if(point==0) break;
          bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
          open=MathRound(OrderOpenPrice()/point);
          if(bid-open<Profit) continue;
          double lots=OrderLots();
          OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
          if(DistMarketAndPos(Symbol(),-1,-1)>Distance)OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,NULL,0,0,CLR_NONE);

         }
       if(OrderType()==OP_SELL)
         {
          point=MarketInfo(OrderSymbol(),MODE_POINT);
          if(point==0) break;
          ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
          open=MathRound(OrderOpenPrice()/point);
          if(open-ask<Profit) continue;
          double lots2=OrderLots();
          OrderClose(OrderTicket(),OrderLots(),ask*point,slippage);

          if(DistMarketAndPos(Symbol(),-1,-1)>Distance)OrderSend(Symbol(),OP_SELL,lots2,Bid,3,0,0,NULL,0,0,CLR_NONE);
         }
      }
   }
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
int DistMarketAndPos(string sy="",int op=-1,int mn=-1)  
   {
    double d,p;
    int i,k=OrdersTotal(),r=1000000;

    if(sy=="" || sy=="0") sy=Symbol();
    p=MarketInfo(sy,MODE_POINT);
    if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
    for(i=0; i<k; i++)  
      {
       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))  
         {
          if((OrderSymbol()==sy) && (op<0 || OrderType()==op))  
            {
             if(mn<0 || OrderMagicNumber()==mn)  
               {
                if(OrderType()==OP_BUY)  
                  {
                   d=MathAbs(MarketInfo(sy,MODE_ASK)-OrderOpenPrice())/p;
                   if(r>d) r=NormalizeDouble(d,0);
                  }
                if(OrderType()==OP_SELL)  
                  {
                   d=MathAbs(OrderOpenPrice()-MarketInfo(sy,MODE_BID))/p;
                   if(r>d) r=NormalizeDouble(d,0);
                  }
               }
            }
         }
      }
    return(r);
   }
//+------------------------------------------------------------------+


Если честно я не увидел область применения такого эксперта. но сделал то что просили.



Программирование на заказ || Наши Разработки

 
СообщениеХорошо смотрите

функция которая ищет ближайший к текущей цене ордер(позицию)


Код
int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
   double d, p;
   int i, k=OrdersTotal(), r=1000000;

   if (sy=="" || sy=="0") sy=Symbol();
   p=MarketInfo(sy, MODE_POINT);
   if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
   for (i=0; i<k; i++) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
         if (mn<0 || OrderMagicNumber()==mn) {
           if (OrderType()==OP_BUY) {
             d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
             if (r>d) r=NormalizeDouble(d, 0);
           }
           if (OrderType()==OP_SELL) {
             d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
             if (r>d) r=NormalizeDouble(d, 0);
           }
         }
       }
     }
   }
   return(r);
}


в Вашем случае надо сделать так:


Код
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);  
OrderSend(Symbol(), OP_BUY, 0.12, 1.5, 3, 0, 0, NULL, 0, 0, CLR_NONE);
 
заменить на:

Код
double lots= OrderLots();
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);  
if(DistMarketAndPos(Symbol(),-1,-1)>Distance)OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL, 0, 0, CLR_NONE);
 

Во первых - новый ордер откроется с предыдущим лотом, а не как у Вас с лотом 0.12
в вторых он откроется, потому что у вас цена грубо говоря не стояла
в третьих новый ордер откроется ТОЛЬКО если не будет на расстоянии 15 пунктов вблизи от текущей цены - никакой позиции ни бай ни селл.

полный код выглядит так:
Код
//+------------------------------------------------------------------+
extern int Profit=1;
extern int Distance=15;
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
void start()
   {
    int slippage=3;
    int ask,bid,open;
    double point;
    for(int i=OrdersTotal()-1; i>=0; i--)
      {
       if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
       if(OrderType()==OP_BUY)
         {
          point=MarketInfo(OrderSymbol(),MODE_POINT);
          if(point==0) break;
          bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
          open=MathRound(OrderOpenPrice()/point);
          if(bid-open<Profit) continue;
          double lots=OrderLots();
          OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
          if(DistMarketAndPos(Symbol(),-1,-1)>Distance)OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,NULL,0,0,CLR_NONE);

         }
       if(OrderType()==OP_SELL)
         {
          point=MarketInfo(OrderSymbol(),MODE_POINT);
          if(point==0) break;
          ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
          open=MathRound(OrderOpenPrice()/point);
          if(open-ask<Profit) continue;
          double lots2=OrderLots();
          OrderClose(OrderTicket(),OrderLots(),ask*point,slippage);

          if(DistMarketAndPos(Symbol(),-1,-1)>Distance)OrderSend(Symbol(),OP_SELL,lots2,Bid,3,0,0,NULL,0,0,CLR_NONE);
         }
      }
   }
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
int DistMarketAndPos(string sy="",int op=-1,int mn=-1)  
   {
    double d,p;
    int i,k=OrdersTotal(),r=1000000;

    if(sy=="" || sy=="0") sy=Symbol();
    p=MarketInfo(sy,MODE_POINT);
    if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
    for(i=0; i<k; i++)  
      {
       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))  
         {
          if((OrderSymbol()==sy) && (op<0 || OrderType()==op))  
            {
             if(mn<0 || OrderMagicNumber()==mn)  
               {
                if(OrderType()==OP_BUY)  
                  {
                   d=MathAbs(MarketInfo(sy,MODE_ASK)-OrderOpenPrice())/p;
                   if(r>d) r=NormalizeDouble(d,0);
                  }
                if(OrderType()==OP_SELL)  
                  {
                   d=MathAbs(OrderOpenPrice()-MarketInfo(sy,MODE_BID))/p;
                   if(r>d) r=NormalizeDouble(d,0);
                  }
               }
            }
         }
      }
    return(r);
   }
//+------------------------------------------------------------------+


Если честно я не увидел область применения такого эксперта. но сделал то что просили.

Автор - expforex
Дата добавления - 12.09.2013 в 16:13

amidtverДата: Четверг, 12.09.2013, 16:36 | Сообщение # 3
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 6
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Спасибо smile

 
СообщениеСпасибо smile

Автор - amidtver
Дата добавления - 12.09.2013 в 16:36

expforexДата: Четверг, 12.09.2013, 16:42 | Сообщение # 4
Главный Администартор
Группа: Администраторы
Сообщений: 9040
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

amidtver, надеюсь помог разобраться. Спрашивайте если че.



Программирование на заказ || Наши Разработки

 
Сообщениеamidtver, надеюсь помог разобраться. Спрашивайте если че.

Автор - expforex
Дата добавления - 12.09.2013 в 16:42

amidtverДата: Четверг, 12.09.2013, 18:30 | Сообщение # 5
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 6
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

не, не так работает, наверное я не понятно объяснил. Я попробую сам разобраться, если не получится, спрошу тогда

 
Сообщениене, не так работает, наверное я не понятно объяснил. Я попробую сам разобраться, если не получится, спрошу тогда

Автор - amidtver
Дата добавления - 12.09.2013 в 18:30

expforexДата: Четверг, 12.09.2013, 18:45 | Сообщение # 6
Главный Администартор
Группа: Администраторы
Сообщений: 9040
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

amidtver, не так работает как хотелось?



Программирование на заказ || Наши Разработки

 
Сообщениеamidtver, не так работает как хотелось?

Автор - expforex
Дата добавления - 12.09.2013 в 18:45

amidtverДата: Четверг, 12.09.2013, 21:34 | Сообщение # 7
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 6
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Я сам смог переделать. Вот код если интересно. Есть ещё пара мыслей как усовершенствовать, что бы убыток от не сработавших позиций свести к самому минимуму. Надо подумать...

Код
//+------------------------------------------------------------------+
extern int Profit=1;
extern int Distance=15;
bool raz=true;

//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+

void start()
{
if (raz==true)
{
OrderSend(Symbol(),OP_BUY,0.12,Ask,3,0,0,NULL,0,0,CLR_NONE);
OrderSend(Symbol(),OP_SELL,0.12,Bid,3,0,0,NULL,0,0,CLR_NONE);
raz=false;
}
int slippage=3;
int ask,bid,open;
double point;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if(OrderType()==OP_BUY)
{
point=MarketInfo(OrderSymbol(),MODE_POINT);
if(point==0) break;
bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
open=MathRound(OrderOpenPrice()/point);
if(bid-open<Profit) continue;
double lots=OrderLots();
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
if(DistMarketAndPos(Symbol(),OP_SELL,-1)>Distance)OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,0,NULL,0,0,CLR_NONE);
if(DistMarketAndPos(Symbol(),OP_BUY,-1)>Distance)OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,NULL,0,0,CLR_NONE);
}

if(OrderType()==OP_SELL)
{
point=MarketInfo(OrderSymbol(),MODE_POINT);
if(point==0) break;
ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
open=MathRound(OrderOpenPrice()/point);
if(open-ask<Profit) continue;
double lots2=OrderLots();
OrderClose(OrderTicket(),OrderLots(),ask*point,slippage);
if(DistMarketAndPos(Symbol(),OP_SELL,-1)>Distance)OrderSend(Symbol(),OP_SELL,lots2,Bid,3,0,0,NULL,0,0,CLR_NONE);
if(DistMarketAndPos(Symbol(),OP_BUY,-1)>Distance)OrderSend(Symbol(),OP_BUY,lots2,Ask,3,0,0,NULL,0,0,CLR_NONE);
}
}
}
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
int DistMarketAndPos(string sy="",int op=-1,int mn=-1)
{
double d,p;
int i,k=OrdersTotal(),r=1000000;

if(sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy,MODE_POINT);
if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==sy) && (op<0 || OrderType()==op))
{
if(mn<0 || OrderMagicNumber()==mn)
{
if(OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy,MODE_ASK)-OrderOpenPrice())/p;
if(r>d) r=NormalizeDouble(d,0);
}
if(OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy,MODE_BID))/p;
if(r>d) r=NormalizeDouble(d,0);
}
}
}
}
}
return(r);
}
//+------------------------------------------------------------------+

 
СообщениеЯ сам смог переделать. Вот код если интересно. Есть ещё пара мыслей как усовершенствовать, что бы убыток от не сработавших позиций свести к самому минимуму. Надо подумать...

Код
//+------------------------------------------------------------------+
extern int Profit=1;
extern int Distance=15;
bool raz=true;

//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+

void start()
{
if (raz==true)
{
OrderSend(Symbol(),OP_BUY,0.12,Ask,3,0,0,NULL,0,0,CLR_NONE);
OrderSend(Symbol(),OP_SELL,0.12,Bid,3,0,0,NULL,0,0,CLR_NONE);
raz=false;
}
int slippage=3;
int ask,bid,open;
double point;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if(OrderType()==OP_BUY)
{
point=MarketInfo(OrderSymbol(),MODE_POINT);
if(point==0) break;
bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
open=MathRound(OrderOpenPrice()/point);
if(bid-open<Profit) continue;
double lots=OrderLots();
OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
if(DistMarketAndPos(Symbol(),OP_SELL,-1)>Distance)OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,0,NULL,0,0,CLR_NONE);
if(DistMarketAndPos(Symbol(),OP_BUY,-1)>Distance)OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,NULL,0,0,CLR_NONE);
}

if(OrderType()==OP_SELL)
{
point=MarketInfo(OrderSymbol(),MODE_POINT);
if(point==0) break;
ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
open=MathRound(OrderOpenPrice()/point);
if(open-ask<Profit) continue;
double lots2=OrderLots();
OrderClose(OrderTicket(),OrderLots(),ask*point,slippage);
if(DistMarketAndPos(Symbol(),OP_SELL,-1)>Distance)OrderSend(Symbol(),OP_SELL,lots2,Bid,3,0,0,NULL,0,0,CLR_NONE);
if(DistMarketAndPos(Symbol(),OP_BUY,-1)>Distance)OrderSend(Symbol(),OP_BUY,lots2,Ask,3,0,0,NULL,0,0,CLR_NONE);
}
}
}
//+------------------------------------------------------------------+
//|                    |
//+------------------------------------------------------------------+
int DistMarketAndPos(string sy="",int op=-1,int mn=-1)
{
double d,p;
int i,k=OrdersTotal(),r=1000000;

if(sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy,MODE_POINT);
if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==sy) && (op<0 || OrderType()==op))
{
if(mn<0 || OrderMagicNumber()==mn)
{
if(OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy,MODE_ASK)-OrderOpenPrice())/p;
if(r>d) r=NormalizeDouble(d,0);
}
if(OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy,MODE_BID))/p;
if(r>d) r=NormalizeDouble(d,0);
}
}
}
}
}
return(r);
}
//+------------------------------------------------------------------+

Автор - amidtver
Дата добавления - 12.09.2013 в 21:34

expforexДата: Пятница, 13.09.2013, 08:50 | Сообщение # 8
Главный Администартор
Группа: Администраторы
Сообщений: 9040
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Поздравляю. 

Нет ничего невозможного.



Программирование на заказ || Наши Разработки

 
СообщениеПоздравляю. 

Нет ничего невозможного.

Автор - expforex
Дата добавления - 13.09.2013 в 08:50

amidtverДата: Пятница, 13.09.2013, 14:43 | Сообщение # 9
Трейдер - Рядовой
Группа: Пользователи
Сообщений: 6
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Подскажите пожалуйста, никак не выходит: Нужно прочитать файл .dat Он лежит в ...experts\files. Запомнить значение из этого файла, затем сравнить, к примеру если значение из файла равно 1, то перезаписать файл со значением 2

 
СообщениеПодскажите пожалуйста, никак не выходит: Нужно прочитать файл .dat Он лежит в ...experts\files. Запомнить значение из этого файла, затем сравнить, к примеру если значение из файла равно 1, то перезаписать файл со значением 2

Автор - amidtver
Дата добавления - 13.09.2013 в 14:43

expforexДата: Пятница, 13.09.2013, 14:51 | Сообщение # 10
Главный Администартор
Группа: Администраторы
Сообщений: 9040
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

amidtver, это сложная процедура для Вас, поэтому объяснять я не знаю что : во первых какой тип файла, бинарный или текстовый - функции разные. 
что именно у Вас не получается как делаете?



Программирование на заказ || Наши Разработки

 
Сообщениеamidtver, это сложная процедура для Вас, поэтому объяснять я не знаю что : во первых какой тип файла, бинарный или текстовый - функции разные. 
что именно у Вас не получается как делаете?

Автор - expforex
Дата добавления - 13.09.2013 в 14:51
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Помощь с советником (Дополнение к существующей программе)
Страница 1 из 512345»
Поиск:


WebMoney Яндекс цитирования.