Когда включаешь скрипт на графике не появляется окошко с входными параметрами, почему?
D500_Rised
Спасибо.Теперь есть ещё вопрос.Есть файл .csv c данными записанные примерно так:
1 A;B;......;G;H
2 A;B;......;G;H
3 A;B;......;G;H
4 A;B;......;G;H
Есть массив например с двумя данными "W"
Нужно дописать данные из массива в файл чтобы получилось так:
1 A;B;......;G;H
2 A;B;......;G;H;W
3 A;B;......;G;H;W
4 A;B;......;G;H;
Всю ночь просидел,так и не понял.
Мысль решения премерно такая: указатель установить в начало файла,потом задать смещение,найти конец строки,.........................ура! добрались
до конца второй строки,это я ещё туманно представляю как сделать,(если конечно туда копаю),но когда начинаешь
записывать данные,то затираются данные на следующей строке.Как это решить вообще понять не могу.
Может кто пример скрипта или ссылку кинет где есть такое решение, в учебнике поверхностно написано. А то нет мне покоя.
Вот скрипт который пытаюсь написать(можно сказать первый в жЫзне):
//+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int i,w,q,s,r,y; int HistTotal,FileHandle,ТИП_ОРДЕРА_int; string ИНСТРУМЕНТ_string, S, ТИП_ОРДЕРА_string; double ЦЕНА_ОТКРЫТИЯ_double, ЦЕНА_ЗАКРЫТИЯ_double ,ЛОТ_double,STOP_LOSS_double, TAKE_PROFIT_double,PROFIT_double,СВОП_double,ЧИСТАЯ_ПРИБЫЛЬ_double; datetime ВРЕМЯ_ОТКРЫТИЯ_datetime,ВРЕМЯ_ЗАКРЫТИЯ_datetime; bool КОНЕЦ_СТРОКИ_bool; //------------------------------------------------------------------------// FileHandle=FileOpen("ИСТОРИЯ СДЕЛОК.csv",FILE_WRITE | FILE_CSV,";"); // if (FileHandle<1) // { //Открытие файла Alert("Не удалось открыть файл, ошибка ",GetLastError()); // return; // } // //------------------------------------------------------------------------// //----------------------------------------------------------------------------// FileWrite(FileHandle,"Дата открытия","Тип ордера", // "Инструмент","Лоты","Цена открытия","Stop Loss","Take Profit", // Создание шапки "Дата закрытия","Цена закрытия","Своп", // "Прибыль(без учёта свопов)","Чистая прибыль"); // //----------------------------------------------------------------------------// //************************************************************************************************************************ //************************************************************************************************************************ //************************************************************************************************************************ HistTotal=OrdersHistoryTotal(); for (i=0; i<HistTotal; i++) { OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if (OrderType()==6) {continue;} else //----------------------------------------------------// ТИП_ОРДЕРА_int = OrderType(); // switch(ТИП_ОРДЕРА_int) // { //Преоброзование типа ордера case 0 : S = "BUY "; break; //из числового формата в формат case 1 : S = "SELL "; break; //string. case 2 : S = "BUY LIMIT "; break; // case 3 : S = "BUY STOP "; break; // case 4 : S = "SELL LIMIT "; break; // case 5 : S = "SELL STOP "; break; // } // //----------------------------------------------------// ИНСТРУМЕНТ_string = OrderSymbol(); ТИП_ОРДЕРА_string = S; ЦЕНА_ОТКРЫТИЯ_double = OrderOpenPrice(); ЦЕНА_ЗАКРЫТИЯ_double = OrderClosePrice(); ВРЕМЯ_ОТКРЫТИЯ_datetime = OrderOpenTime(); ВРЕМЯ_ЗАКРЫТИЯ_datetime = OrderCloseTime(); STOP_LOSS_double = OrderStopLoss(); TAKE_PROFIT_double = OrderTakeProfit(); ЛОТ_double = OrderLots(); PROFIT_double = OrderProfit(); СВОП_double = OrderSwap(); ЧИСТАЯ_ПРИБЫЛЬ_double = PROFIT_double - СВОП_double; //--------------------------------------------------------------------------------------------------// string Text[100]; //Объявление массива // for(w=0; w<=99; w++) //Цель блока:Создать массив с { //названиями всех иструментов if (Text[w]==ИНСТРУМЕНТ_string) //Если в массиве есть такой иструмент, | ! НАДО //по которым хоть раз выставлялись {break;} //то прерываем цикл | ОПТИМИЗИРОВАТЬ //ордера.(Покупка,продажа, else {q++;} //Иначе увеличиваем счётчик //плюс четыре вида отложенных). } // if (q==100) //Если счётчик равен 100,то такого иструмента в масс.нет //НО чтобы эти инструменты не { //повторялись. q=0; //Обнулить счётчик // Text[s] = ИНСТРУМЕНТ_string; //Присвоить массиву с идексом "s" значение переменной //И по порядку записать их в s++; //Увеличить счетчик //массив. } // //--------------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------------// FileWrite(FileHandle,TimeToStr (ВРЕМЯ_ОТКРЫТИЯ_datetime),ТИП_ОРДЕРА_string,ИНСТРУМЕНТ_string, // ЛОТ_double,ЦЕНА_ОТКРЫТИЯ_double,STOP_LOSS_double,TAKE_PROFIT_double, // TimeToStr (ВРЕМЯ_ЗАКРЫТИЯ_datetime),ЦЕНА_ЗАКРЫТИЯ_double,СВОП_double,PROFIT_double, //Запись в файл ЧИСТАЯ_ПРИБЫЛЬ_double); // // // //--------------------------------------------------------------------------------------------------// } //ВЫХОД ИЗ ЦИКЛА //************************************************************************************************************************* //************************************************************************************************************************* //************************************************************************************************************************* //--------------------------------------------------------------------------------------------------- /* FileSeek( FileHandle,0,SEEK_SET ); //УСТАНВЛИВАЮ УКАЗАТЕЛЬ В НАЧАЛО ФАЙЛА for (r=0;r<500;r++) { } //FileSeek( FileHandle,336,SEEK_SET ); //FileWrite(FileHandle,"1+++++","\r\n"); // for (y=0;y<s;y++) // {FileWrite(FileHandle,";",";",";",";",";",";",";",Text[y]);} */ //-----------------------------------------------------------------------// if(FileHandle>0) FileClose(FileHandle); //Закрытие файла //-----------------------------------------------------------------------// // ТЕСТ // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// for (y=0;y<s;y++) {Alert (Text[y]);} Alert ("***********************************************************************"); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// return(0); }
У меня заняло 30 секунд найти подобный скрипт.
'RSI to File'
'RSI to File'
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь