А как вы уже пробовали исправить?
Чтоб люди даром не пробовали заранее неправильные варианты ;)
Чтоб люди даром не пробовали заранее неправильные варианты ;)
А как вы уже пробовали исправить?
Я ж не гений, это выше моих сил.
В логике четко прописано - "пересечения" средних, а стрелка появляется на окончании запаздывающей средней и что интересно, появляется только стрелка на продажу, и так: на графиках одних пар валют или периодах графиков этих валют этот глюк есть, а на других нет.
Уже, как можно, упростил код убрал все лишнее, всеровно.
А это здесь не мешает (это тоже надо):
double dMuv11p; double dMuvB11p; dMuv11p = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+57); dMuvB11p = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+58);
Я делал стрелки на пересечении достаточно сложных мувингов. Все работало, посмотреть можно здесь - http://forexsystems.ru/phpBB/viewtopic.php?t=649&postdays=0&postorder=asc&start=15 Ergodic Signals
Спасибо, Rosh, но мне бы хотелось самому писать коды и знать как удалять эти глюки.
Я вроде тебе не мешаю, смотри код и сравнивай, может чем поможет.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
#property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Aqua #property indicator_color2 Red // indicator buffers double Buyb[]; // Buy indicator line double Sellb[]; // Sell indicator line int nRemoveFirst = 1; // Muvastic indicator double dMuv11p; double dMuvB11p; double dMuv11n; double dMuvB11n; double dMuv11m; double dMuvB11m; int nType1 = 0; double dOpenPrice; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,233); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,234); // indicator buffers mapping SetIndexBuffer(0, Buyb); SetIndexBuffer(1, Sellb); SetIndexDrawBegin(0, nRemoveFirst); SetIndexDrawBegin(1, nRemoveFirst); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- // How many bars were processed int nExtCountedBars = IndicatorCounted(); for(int nBar = Bars - nRemoveFirst; nBar > 0; nBar--) { dMuv11p = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+57); dMuvB11p = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+58); dMuv11n = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar); dMuvB11n = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar+1); dMuv11m = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar-57); dMuvB11m = iMA(NULL,0,52,0,MODE_SMA,PRICE_MEDIAN,nBar-58); // Buyb[nBar] = 0; // Set to "no buy, no sell" // Sellb[nBar] = 0; // Logic of the trading system begins /////-----/////-----/////----/////------////-----22222222222222 // If it is time to buy if(nType1 != -1 // no long positions && dMuv11m >= dMuv11n && dMuvB11m <= dMuvB11n) { if(nType1 == 1) // If we have short - close it { } Buyb[nBar] = Low[nBar]-10*Point; dOpenPrice = High[nBar]; nType1 = -1; } // Time to sell else if(nType1 != 1 // no short positions && dMuv11m <= dMuv11n && dMuvB11m >= dMuvB11n) { if(nType1 == -1) { } Sellb[nBar] = High[nBar]+10*Point; dOpenPrice = Low[nBar]; nType1 = 1; } } //---- return(0); } //+------------------------------------------------------------------+