Форум трейдеров » Торговые роботы, советники, индикаторы » Вопросы программирования
+ Подписаться
Страница 78 из 87 ПерваяПервая ... 28687677787980 ... ПоследняяПоследняя
  1. 1,156
    Комментарии
    4
    Темы
    1189
    Репутация Pro
    Аватар для zerkmax  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от Crucian Посмотреть сообщение
    стоп 30 профит 100


    Модификацию второго ордера может спокойно пропустить выдать ошибку 130 и пойти дальше. Какая есть функция что-бы не выходить пока не завершит операцию?
    в приведенном коде вы дважды инициализируете переменную ticket.

    Если вы ее используете несколько раз, то надо где-то в начале написать int ticket=0, а в остальных случаях int убрать.

    по существу: такой функции нет.
    надо организовывать цикл :проверять все выставленные ордера, и если у них нет TP и SL? то просто пытаться еще раз их поставить
  2. 19
    Комментарии
    0
    Темы
    19
    Репутация Pro
     
    Новичок

    2 Медалей
    Подскажите пожалуйста что дописать в проге? я вот пример нашел как сохранять инфу в файл, а как доставать ее без примера не могу сообразить. Пример:

    int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";");
    if(handle>0)
    {
    // запись заголовков столбцов таблицы
    FileWrite(handle, "Time;Open;High;Low;Close;Volume");
    // запись данных
    for(int i=0; i<Bars; i++)
    FileWrite(handle, Time[i], Open[i], High[i], Low[i], Close[i], Volume[i]);
    FileClose(handle);
    }
    к примеру хочу теперь из файла получать инфу Open[i] и выводить через Comment. (я учусь поэтому результат всегда так смотрю)
    мой вариант чего нужно дописать:
    }


    handle=FileOpen("file.csv", FILE_BIN|FILE_READ);
    if(handle>0)
    {
    FileReadArray(handle, Open[1], 1, 2);
    Comment("Цена открытия", Open);
    FileClo
    se(handle);
    }

    Ну просмеялись,а теперь прошу помочь)))
  3. 1,481
    Комментарии
    24
    Темы
    1497
    Репутация Pro
    Аватар для aus  
    ПэкМэк

    5 Медалей
    Цитата Сообщение от D7D Посмотреть сообщение
    Подскажите пожалуйста что дописать в проге? я вот пример нашел как сохранять инфу в файл, а как доставать ее без примера не могу сообразить. Пример:

    int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";");
    if(handle>0)
    {
    // запись заголовков столбцов таблицы
    FileWrite(handle, "Time;Open;High;Low;Close;Volume");
    // запись данных
    for(int i=0; i<Bars; i++)
    FileWrite(handle, Time[i], Open[i], High[i], Low[i], Close[i], Volume[i]);
    FileClose(handle);
    }
    к примеру хочу теперь из файла получать инфу Open[i] и выводить через Comment. (я учусь поэтому результат всегда так смотрю)
    мой вариант чего нужно дописать:
    }


    handle=FileOpen("file.csv", FILE_BIN|FILE_READ);
    if(handle>0)
    {
    FileReadArray(handle, Open[1], 1, 2);
    Comment("Цена открытия", Open);
    FileClo
    se(handle);
    }

    Ну просмеялись,а теперь прошу помочь)))
    Я ,к примеру , не смеялся ;) :D

    Можно так :

    http://www.procapital.ru/showpost.ph...postcount=1225

    кусок ниже из того ind _а
    //------------------
    int init(){
    IndicatorShortName(sWnm);
    int v_handle,k;string s="";
    v_handle=FileOpen(f_SmblExprtn,FILE_CSV|FILE_READ) ;
    if(v_handle<1){}
    else{
    //--------------------------
    i=0;
    while(!FileIsEnding(v_handle)){

    s="";s=FileReadString(v_handle); ///// здесь из s и берёшь в Comment

    if(StringLen(s)>0){i++;ArrayResize(list,i);list[i-1]=s;}
    }//while(!FileIsEnding(v_handle))
    FileClose(v_handle);
    //--------------------------
    }//if(v_handle<1){}
    //-------------------------------
  4. 19
    Комментарии
    0
    Темы
    19
    Репутация Pro
     
    Новичок

    2 Медалей
    Спилберг, не понятно.....
    В файл запись идет хорошо, научился. контролирую путем открытия самого файла. Научите пожалуйста извлекать к примеру 5ю строку из файла в переменную в программе.
    Я так понял переменная в которой будет нужная инфа это : value. Текст проги до которой я дорос ниже. Ошибок не выдает, но и результат тоже. Спасибо огромное.

    int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";");
    if(handle>0)
    {
    // запись заголовков столбцов таблицы
    FileWrite(handle, "Time");
    // запись данных
    for(int i=0; i<10; i++)
    FileWrite(handle, Time[i]);

    FileClose(handle);

    }

    double value;
    handle=FileOpen("file.csv",FILE_READ);
    if(handle>1)
    {
    value=FileReadDouble(handle,"Time");
    Comment("value")
    ;
    }
  5. 1,481
    Комментарии
    24
    Темы
    1497
    Репутация Pro
    Аватар для aus  
    ПэкМэк

    5 Медалей
    Цитата Сообщение от D7D Посмотреть сообщение
    Спилберг, не понятно.....
    ....
    Что такое 'Спилберг' ?
  6. 3,168
    Комментарии
    1
    Темы
    3184
    Репутация Pro
    Аватар для SergP  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от D7D Посмотреть сообщение
    Спилберг, не понятно.....
    В файл запись идет хорошо, научился. контролирую путем открытия самого файла. Научите пожалуйста извлекать к примеру 5ю строку из файла в переменную в программе.
    Я так понял переменная в которой будет нужная инфа это : value. Текст проги до которой я дорос ниже. Ошибок не выдает, но и результат тоже. Спасибо огромное.

    int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";");
    if(handle>0)
    {
    // запись заголовков столбцов таблицы
    FileWrite(handle, "Time");
    // запись данных
    for(int i=0; i<10; i++)
    FileWrite(handle, Time[i]);

    FileClose(handle);

    }

    double value;
    handle=FileOpen("file.csv",FILE_READ);
    if(handle>1)
    {
    value=FileReadDouble(handle,"Time");
    Comment("value")
    ;
    }
    пишите 10 значений, а читать хотите одно..... читайте 10 значений, и из них выбирайте нужное....
  7. 19
    Комментарии
    0
    Темы
    19
    Репутация Pro
     
    Новичок

    2 Медалей
    ОФТОП

    Цитата Сообщение от aus Посмотреть сообщение
    Что такое 'Спилберг' ?
    "Спилберг, не понятно" это популярная фраза из телешоу.
  8. 19
    Комментарии
    0
    Темы
    19
    Репутация Pro
     
    Новичок

    2 Медалей
    2 SergP не смог понять где указывать сколько строк читать. Переделал что бы прога записывала только одно значение в файл, но все равно не могу его заставить читаться. Этот вариант проги вообще не компилируется. догнать почему int handle - является ошибкой так и не смог. Подскажите хоть что использовать из для чтения строки из файла:
    FileOpen
    FileOpenHistory
    FileReadArray
    FileReadDouble
    FileReadInteger
    FileReadNumber
    FileReadString



    int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";");
    if(handle>0)
    {
    // запись заголовков столбцов таблицы
    FileWrite(handle, "Open");
    // запись данных
    for(int i=0; i<1; i++)
    FileWrite(handle, Open[i]);
    FileClose(handle);

    }

    int handle;
    int pos;
    handle=FileOpen("file.csv", FILE_BIN|FILE_READ);
    // чтение некоторых данных
    pos=FileTell(handle);
    Comment("current position is", pos);
  9. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от D7D Посмотреть сообщение
    2 SergP не смог понять где указывать сколько строк читать. Переделал что бы прога записывала только одно значение в файл, но все равно не могу его заставить читаться. Этот вариант проги вообще не компилируется. догнать почему int handle - является ошибкой так и не смог. Подскажите хоть что использовать из для чтения строки из файла:
    FileOpen
    FileOpenHistory
    FileReadArray
    FileReadDouble
    FileReadInteger
    FileReadNumber
    FileReadString



    int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";");
    if(handle>0)
    {
    // запись заголовков столбцов таблицы
    FileWrite(handle, "Open");
    // запись данных
    for(int i=0; i<1; i++)
    FileWrite(handle, Open[i]);
    FileClose(handle);

    }

    int handle;
    int pos;
    handle=FileOpen("file.csv", FILE_BIN|FILE_READ);
    // чтение некоторых данных
    pos=FileTell(handle);
    Comment("current position is", pos);
    В справке MQL очень хорошо описано чтение/запись файла.

    ЗЫ: а почему вы пишете файл формата CSV, а читаете BIN?
  10. 2,682
    Комментарии
    28
    Темы
    2807
    Репутация Pro
    Аватар для sydiya  
    Сурововец

    6 Медалей
    Цитата Сообщение от Денис Давыдов Посмотреть сообщение
    В справке MQL очень хорошо описано чтение/запись файла.

    ЗЫ: а почему вы пишете файл формата CSV, а читаете BIN?
    Описано может и хорошо, но подобная проблема стоит и передо мной. Пишу в файл данные по дневной свече несколько раз в день. В течении дня последнюю строку надо переписывать, а на следующий день начать писать в новой строке.
    Проблема в том, как перевести файловый указатель именно в начало последней строки. Целый день мурыжил, не получается.
    В целях понимания пытаюсь прочитать последнюю строку делаю так-
    //------------Читаем последнюю строку-------------------
    Handle=FileOpen(SymbolsList[i]+".htm",FILE_CSV|FILE_READ," ");//Открытие файла
    int Total_1;
    for(int ofset=1;ofset<1000;ofset++){
    FileSeek(Handle,ofset,SEEK_END);
    Total_1++;
    if(FileIsLineEnding(Handle))
    break;
    }
    str=FileReadString(Handle) ;// Читаем все что написано в последней строке
    Print("Написанно: ",str," ofset= ",ofset," Total_1= ",Total_1);//----------------------------------------Проверка-------------------

    FileClose(Handle);

    То есть мысль такая. В цикле сдвигать файловый указатель на 1, до тех пор пока FileIsLineEnding(Handle) не станет истиной, т.е пока файловый указатель не окажется в конце предыдущей строки. Счетчик показывает 7 и цикл на этом почему то заканчивается, в строке нечего нет, то есть пустая. Я так понимаю что когда файловый указатель сдвигается от конца файла на один байт (8 бит) функция FileIsLineEnding(Handle) становится истиной. Но строка там длинная, явно не в 1 байт.
    Кто объяснит?

Вверх
РегистрацияX

чтобы писать, читать, комментировать