Посты на форуме

Антон Севостьянов
20 мая 2019 г.
In Трейдер Live
Привет всем трейдерам! утроение депо за неделю в 3 этапа (навороченный Снайпер) непосредственно вот они эти 3 этапа: 1-записал историю (2-3 дня), 2-прогнал историю на тестере (пол дня), 3-поставил на торги (2 дня), итого для удвоения-утроения депозита вам понадобится всего 1-2 недели. Опасения: прибыль закрыта, но на рынке остались открытые ордера с отрицательной прибылью выход 1: пересидеть минус и дождаться, пока робот сам не закроет их по прибыли (проверял на собственном счёте - это максимум 1-2 недели) выход 2: закрыть то, что есть с минусом, ссылаясь на то, что общая прибыль больше убытка вопрос: сможет ли ваш счёт пересидеть минус? ответ: да сможет, по причине двух дней постоянного заработка И всё это становится возможным лишь только в случае соблюдения правил тестирования, которые указаны в инструкции, либо я приведу цитаты: правило 1: кредитное плечо больше 100 правило 2: количество знаков после точки: любое правило 3: не запускать другие торги на текущем счёте пока не закончится срок действия файла-чистовика (2 дня) правило 4: после сообщения тестера о том, что "файл-чистовик готов", необходимо прогнать найденные параметры в режиме #PROFESSIONAL MODE=1 и только после 2-10 подряд успешных запусках тестера можно использовать готовый файл-чистовик для торгов на вашем счёте примечание: если 2-10 успешных подряд запусков не удалось добиться, то, находясь в режиме #PROFESSIONAL MODE=1, отметить нижеперечисленные переменные шагом их будущего изменения со знаком "минус", после чего задать параметру #PROFESSIONAL MODE значение 0 и ждать, пока тестер найдёт прибыль, перебирая нижеперечисленные параметры: ++MAXIMUM OF ORDERS, ++LOT SIZE IN PERCENT, _MG DEPTH, _TRAILING STOP, _TRAILING STOP FIRST, ++WAITING TIME IN SECONDS, ++TRAILING SPREAD, ++TRAILING PIPS [1...>], ++MIN TPS, ++MAX TPS, ++CRUSER LOT INCREASE, ++(PRC)CANDLE WAITING примечание: для параметра ++CRUSER LOT INCREASE это значение может колебаться от -0.01 до -0.5 на ваше усмотрение, для остальных параметров значение шага может колебаться от -1 до -200 на ваше усмотрение вопрос: как определить, что всё происходит так, как надо? ответ: во вкладке "Эксперты" после выхода из режима #PROFESSIONAL MODE вы должны увидеть сообщение: "обнаружены дополнительные инструкции на этапе выхода из режима <#PROFESSIONAL>" - если всё так и было, то вы должны выйти ("каприз программы") из тестера, т.е. ввести "-9999" в переменную "__refresh_now" и потом заново запустить тестер в режиме автопродолжения, при условии, что параметр "PROFESSIONAL MODE [0/1]" из файла "CONFIG_SN.txt" равен нулю (-в противном случае, его необходимо будет приравнять нулю, перед следующим стартом тестера) вопрос: что будет, если не выполнять "каприз программы"? ответ: тестер не сможет найти прибыль (я вспоминаю аналогичный случай с парой USDZAR) вопрос: что делать, если тестер всё равно ничего не найдёт? ответ: приниматься за другую пару по причине того, что текущей (проблемной) валютной паре нужно время для обновления истории для следующей попытки (это примерно 1-2 дня). в тестере исправлена серьезная ошибка относительно завышения максимального количества одновременно отрытых ордеров: скачать весь проект по ссылке: h t t p s : / / t u s f i l e s . c o m /mp0nmptb6ouc (ссылка 11.7Mb от 08.06.2019) (уберите "пробел" из адреса ссылки) файлы истории (пара.ASK, пара.BID, пара.DAT) для EURUSD и USDZAR (плечо=200) для проверки работы тестера: h t t p s : / / t u s f i l e s . c o m /lonspth9eff2 (уберите "пробел" из адреса ссылки) мой демо счёт: 2090270826 пароль инвестора: hrNMM2ffQ9 сервер брокера: h t t p s : / / t i c k m i l l . c o m (уберите "пробел" из адреса ссылки) цена: 100$ для приобретения полной или демо-версии обращайтесь на почту: Lucifernilsen@yahoo.com (в теме укажите: "REAL" или "DEMO") P.S.: возможно приобрести демо-версию бесплатно, при условии, что она будет зарегистрирована на демо счёт (автор сам должен будет проверить этот счёт) тестер теперь не имеет ошибок! что нового: добавился режим "FAST PROFIT SEARCH IN ADDITIONAL INSTRUCTIONS MODE [0/1]=1", который ускоряет поиск прибыли путём переключения на следующую переменную при не обнаружении новой прибыли (только для режима дополнительных инструкций) скачать весь проект по ссылке: h t t p s : / / t u s f i l e s . c o m /6x9n8f5mosew (ссылка размером 11.7 Mb от 01.07.2019 будет жить 15 дней) (уберите "пробел" из адреса ссылки) P.S.: за край канала теперь можно не беспокоиться - я встроил код этого индикатора в RECEIVER_SN: ( для нормальной работы вам понадобится клавиша "F3" ) #property copyright " * * * John Doe * * * " // проверка исторических минимумов / максимумов #property link "https://youtu.be/A9p9RxFYHOQ" extern string mv="глубина проверки железных уровней в днях"; extern int SUPER_LEVEL_DEPTH_IN_DAYS=70; extern string sv="глубина проверки уровней в днях"; extern int LEVEL_DEPTH_IN_DAYS=7; extern string mw="5-ти знаковый брокер [1/0]:"; extern bool five=false; static string s2, HID[2]={"минимумам","максимумам"}; static double FBM; static int HBR; void init() { int de=1, de0, Digits_now, tck, SAS, dir, dir0, LMC, LMC0, SLM, SLM0, res1, out; double GLM, SS, hand_point, W, W1, W2, ask0, bid0, ML, MH; datetime TTL, DT=0; bool ZARID, try=false, ferrum, ferrum2; string st, st1, st2, st3, st4, st5, r; string ONOFF[2]={"запрещены","разрешены"}; string MODES[4]={"","обычный","железобетонный","разрешённый"}; string FERRO[2]={"",", цена в железобетонном уровне"}; string FERR[2]={"",", цена в глобальном уровне"}; //--------------------- tck=2000; Digits_now=0; while (Digits_now<=0 && tck>0) {Digits_now=MarketInfo(s2, MODE_DIGITS); tck--; Sleep(5);} if (Digits_now<=0) {Print ("Digits=0 - робот работать не будет"); return;} hand_point=Point; if (hand_point==0) hand_point=MarketInfo(s2, MODE_POINT); if (hand_point==0) hand_point=1/MathPow(10,Digits_now); s2=Symbol(); if (StringSubstr(s2,3,3)=="ZAR") ZARID=true; else ZARID=false; st="__History_deepth_(0-Exit)"; st1="_ASK"; st2="_BID"; st3="_DIRECTION_[0-BUY/1-SELL]"; st4="_LEVEL_MAX_CROSS"; st5="_STRONG_LEVEL_MODE [0/1]"; //--------------------------------------------------------------------------------------------------------- // первая принудительная прокрутка истории в терминале ОБЯЗАТЕЛЬНО СКОПИРОВАТЬ В БЛОК Init() RECEIVER'а SS=0; tck=2000; SAS=MathMax(SUPER_LEVEL_DEPTH_IN_DAYS,LEVEL_DEPTH_IN_DAYS); while (SS==0 && tck>0) { SS=iLow(s2,1440,SAS); tck--; Sleep (3); } //--------------------------------------------------------------------------------------------------------- while (de>0) { TTL=TimeLocal(); if (DT>TTL) { if (GlobalVariableCheck(st)) de=GlobalVariableGet(st); else {de=LEVEL_DEPTH_IN_DAYS; GlobalVariableSet(st,de);} //--------------------------------------------------------------- if (de<7) SAS=de*2; else SAS=de+1; if (SAS<4) SAS=4; else if (SAS>12) SAS=12; if (five && !ZARID) {SAS*=10; W=3.7;} else if (ZARID) {W=2; if (five) SAS*=100; else SAS*=65;} SS=hand_point*SAS; //--------------------------------------------------------------- ferrum=false; ferrum2=false; if (dir==0) { MH=iHigh(s2,1440,de); GLM=iGlobal(de,1-dir,ask0,ZARID,SS,W); // универсальная команда, возвращающая также железный уровень и кол-во часовых пробитий за 7 дней Print (r+"за "+DoubleToStr(de,0)+" дней: глобальный максимум="+DoubleToStr(GLM,Digits)); Print ("железобетонный максимум="+DoubleToStr(FBM,Digits)); Print ("почасовых пробитий для максимума="+DoubleToStr(HBR,0)); if (ask0>=FBM) ferrum=true; if (ask0>=GLM) ferrum2=true; } else { ML=iLow(s2,1440,de); GLM=iGlobal(de,1-dir,bid0,ZARID,SS,W); // GLM=iGlobal(de,1,1.1340); // -- // -- // -- // Print (r+"за "+DoubleToStr(de,0)+" дней: глобальный минимум="+DoubleToStr(GLM,Digits)); Print ("железобетонный минимум="+DoubleToStr(FBM,Digits)); Print ("почасовых пробитий для минимума="+DoubleToStr(HBR,0)); if (bid0<=FBM) ferrum=true; if (bid0<=GLM) ferrum2=true; } if (!try) r=""; else r="(повтор): "; if (!try && ((dir==1 && ML==0) || (dir==0 && MH==0))) {DT=TTL+2; try=true; Print ("ошибка функции N_"+GetLastError());} else {DT=0; try=false;} //------------------------------------------- здесь определяется направление создания ордера и результат: можно/нельзя: res1=0; // res1: 1-обычный, 2-железобетонный, 3-разрешённый if (HBR==0 || ferrum) res1=2; // 2-железобетонный if (res1==0) { if (HBR<=LMC) res1=1; else res1=3; // 1-обычный else 3-разрешённый } //------------------------------------------------------------ out=0; if (res1==1) // 1-обычный { if (SLM==1 || ferrum2) out=0; else out=1; } if (out==0) { if (res1==2) out=0; else if (res1==3 && !ferrum2) out=1; } Print ("РЕЗУЛЬТАТЫ: режим="+MODES[res1]+FERRO[ferrum]+FERR[ferrum2]+", итого торги "+ONOFF[out]+"!"); //------------------------------------------------------------------------------------------------------------------------ } else { if (GlobalVariableCheck(st)) { de=GlobalVariableGet(st); if (de!=de0) {DT=TTL+2; de0=de;} } else {de=LEVEL_DEPTH_IN_DAYS; GlobalVariableSet(st,de);} //----------------------------------------------------------- if (GlobalVariableCheck(st1)) { ask0=GlobalVariableGet(st1); if (ask0!=W1) {DT=TTL+2; W1=ask0;} } else {ask0=MarketInfo(s2,MODE_ASK); GlobalVariableSet(st1,ask0);} //----------------------------------------------------------- if (GlobalVariableCheck(st2)) { bid0=GlobalVariableGet(st2); if (bid0!=W2) {DT=TTL+2; W2=bid0;} } else {bid0=MarketInfo(s2,MODE_BID); GlobalVariableSet(st2,bid0);} //----------------------------------------------------------- if (GlobalVariableCheck(st3)) { dir=GlobalVariableGet(st3); if (dir!=dir0) {DT=TTL+2; dir0=dir;} } else {dir=0; GlobalVariableSet(st3,dir);} //----------------------------------------------------------- if (GlobalVariableCheck(st4)) { LMC=GlobalVariableGet(st4); if (LMC!=LMC0) {DT=TTL+2; LMC0=LMC;} } else {LMC=4; GlobalVariableSet(st4,LMC);} //----------------------------------------------------------- if (GlobalVariableCheck(st5)) { SLM=GlobalVariableGet(st5); if (SLM!=SLM0) {DT=TTL+2; SLM0=SLM;} } else {SLM=1; GlobalVariableSet(st5,SLM);} //----------------------------------------------------------- Sleep (10); } } if (GlobalVariableCheck(st)) GlobalVariableDel(st); Print ("Выход..."); } void deinit() { return; } void start() { return; } double iGlobal(int d0, bool high_ID, double price, bool ZAR, double shift0, double zuma_W) { int i0, imax, imax2, att, re, SLD; int i1, i2; double x0, found1, found2; //-----------------------------------// found1 - за 7 дней, found2 - за 60 дней imax=d0*24; // 7*24=168 imax2=imax; if (ZAR) SLD=SUPER_LEVEL_DEPTH_IN_DAYS/4; else SLD=SUPER_LEVEL_DEPTH_IN_DAYS; if (imax2<SLD) imax2=SLD; HBR=0; if (high_ID) {found1=0; found2=0;} else {found1=99999; found2=99999;} for (i0=0; i0<=imax2; i0++) { x0=0; att=93; while (x0==0 && att>0) { if (high_ID) { x0=iHigh(s2,1440,i0); // дневной максимум if (x0!=0) { if (i0<=SLD) i1=i0; if (x0>found1 && i0<=d0) found1=x0; if (x0>found2 && i0<=SLD) found2=x0; } x0=iHigh(s2,60,i0); // часовой максимум if (x0!=0) i2=i0; if (i0<=imax && x0>=price && price>=iLow(s2,60,i0)) re++; } else { x0=iLow(s2,1440,i0); // дневной минимум if (x0!=0) { if (i0<=SLD) i1=i0; if (x0<found1 && i0<=d0) found1=x0; if (x0<found2 && i0<=SLD) found2=x0; } x0=iLow(s2,60,i0); // часовой минимум if (x0!=0) i2=i0; if (i0<=imax && x0<=price && price<=iHigh(s2,60,i0) && x0!=0) re++; } if (x0==0) att--; } }//for (i0=0; i0<=imax2; i0++) //---------------------------------------------------- if (high_ID) {found1-=shift0; FBM=found2-shift0*zuma_W;} else {found1+=shift0; FBM=found2+shift0*zuma_W;} HBR=re; //---------------------------------------- if (i2<imax) Print ("фактически удалось собрать только за "+DoubleToStr(i2,0)+" часов истории по "+HID[high_ID]); if (i1<SLD) Print ("фактически удалось собрать только за "+DoubleToStr(i1,0)+" дней истории по "+HID[high_ID]); return (found1); }
навороченный Снайпер content media
0
0
111
Антон Севостьянов
Другие действия