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

 

У меня проблема до смешного дошла. Ошибка в функция закрытия ордера.

OrserClose(int tip){
if(tip==1){
for( i=0;i<OrdersTotal();i++){
           if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic){
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               }
           }
         }  
}

дает ошибку (причем в разных терминалах)

EURCHF,M5: OrderClose error 4107

EURCHF,M5: invalid price 1.48566000 for OrderClose function


если сделать

OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3, Violet);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,Violet);

таже самая ошибка. но причем когда я пишу OrderClose(..) не в отдельной функции а в int start() то такой ошибки не возникает.

в чем дело и как вылечить?



 
попробуй прогнать цикл из конца в начало
for( i = OrdersTotal() - 1; i > 0; i--)
 
T-G >>:

У меня проблема до смешного дошла. Ошибка в функция закрытия ордера.

дает ошибку (причем в разных терминалах)

EURCHF,M5: OrderClose error 4107

EURCHF,M5: invalid price 1.48566000 for OrderClose function


если сделать

таже самая ошибка. но причем когда я пишу OrderClose(..) не в отдельной функции а в int start() то такой ошибки не возникает.

в чем дело и как вылечить?









нормализуйте цену

 

int tick = 0, MaxTicks = 5;
bool SaveTickOn = 1;
string bid_s;

int start(){
   if(SaveTickOn){
      int rw_mode = FILE_CSV|FILE_READ|FILE_WRITE;
      if(tick == 0) rw_mode = FILE_CSV|FILE_WRITE;
      int handle1 = FileOpen("bids1.dat",rw_mode," ");
      bid_s = DoubleToStr(Bid,Digits); 
      FileWrite(handle1,bid_s);
      if(GetLastError() != 0) Alert("Error= ",GetLastError());
      Alert(tick,": ",bid_s);
      tick++;
      if(tick == MaxTicks) SaveTickOn = 0; 
      FileClose(handle1);
   }
   return(0);
}

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

FILE_READ|FILE_WRITE 

не работает.

Что это может быть?

 

воткни вот это в старт, закроет все с гарантией, только впиши условия..

if (Close_) {
for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

if ((OrderType() == OP_BUY) &&(условие закрытия для бай)) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
if ((OrderType() == OP_SELL)&&(условие закрытия для селл)) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);
}
Sleep(1000);
}
}
}
 
Andrei01 >>:

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

не работает.

Что это может быть?

Проверил также что функция указателя на конец файла FileIsEnding(handle1) возвращает ноль, а должно быть 1, то есть видимо есть баг в MT4 в режиме добавления в файл.

 
Andrei01 писал(а) >>

Проверил также что функция указателя на конец файла FileIsEnding(handle1) возвращает ноль, а должно быть 1, то есть видимо есть баг в MT4 в режиме добавления в файл.

А перейти в конец файла не пробовали? FileSeek()

 
//+------------------------------------------------------------------+
//| Запись строки в файл |
//+------------------------------------------------------------------+
void WritingLineInFile(string FileName, string text)
{  
  int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " ");

 if (file_handle>0)
 {
  FileSeek(file_handle, 0, SEEK_END);
  FileWrite(file_handle, text);
  FileClose(file_handle);
 }
 
}
Багов нет надо просто правильно писать. Эта функция добавляет text  в FileName .
 

Здрасти! 

Пробую программировать самостоятельно!

Помогите разобраться в каком направлении двигаться! если нужно срочно и побыстрее (для начала)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Есть определённый индикатор состоящий из двух МА

Необходимо создать звуковой сигнал при пересечении двух МА c выходом сообшения на экран с помощью функции  "MessageBox

   Что делать? 

1.Создавать скрипт? с функцией  "MessageBox"

2.Или дописать условие в код индикатора с этой функцией?

3.Или связать уже готовый скрипт с индикатором? Как их связать если возможно?

4.Или проще создать эксперта?

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

(условия эксперта...бай если быстрая МА пересекла (или каснулась) медленную МА с низу в верх

..............................сел если быстрая МА пересекла (или каснулась) медленную МА с верху в низ

..............................с функцией StopLoss

..............................с функцией TakeProfit

..............................с функцией Lot 

Спасибо!

 
DRevodel писал(а) >>

Здрасти!

Пробую программировать самостоятельно!

Помогите разобраться в каком направлении двигаться! если нужно срочно и побыстрее (для начала)

Есть определённый индикатор состоящий из двух МА

Необходимо создать звуковой сигнал при пересечении двух МА c выходом сообшения на экран с помощью функции "MessageBox"

Что делать?

2.Или дописать условие в код индикатора с этой функцией?

Спасибо!

Причина обращения: