-
Постов
232 -
Зарегистрирован
-
Посещение
Информация о intradey
- День рождения 01/21/1962
Информация
-
4
real
Достижения intradey
живет тут (5/5)
0
Репутация
-
Помогите пожалуйста, подскажите где в коде поменять настройки: цены: (мне нужен Close/Close) настройка Low/High и ещё он настроен так: при пересечении линией %K (MainBuffer) уровня 30 снизу вверх индикатор скажет "Buy", а при пересечении уровня 70 сверху вниз - "Sell". ... а мне нужно наоборот пересечении линией %K (MainBuffer) уровня 30 сверху вниз и при пересечении уровня 70 снизу вверх... //+------------------------------------------------------------------+ //| sStochastic.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" //---- #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_buffers 2 #property indicator_color1 LightSeaGreen #property indicator_color2 Red //---- input parameters extern int KPeriod = 5; extern int DPeriod = 3; extern int Slowing = 3; //---- buffers double MainBuffer[]; double SignalBuffer[]; double HighesBuffer[]; double LowesBuffer[]; //---- int draw_begin1 = 0; int draw_begin2 = 0; //---- Номер бара, по которому будет искаться сигнал #define SIGNAL_BAR 1 //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- 2 additional buffers are used for counting. IndicatorBuffers(4); SetIndexBuffer(2, HighesBuffer); SetIndexBuffer(3, LowesBuffer); //---- indicator lines SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, MainBuffer); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1, SignalBuffer); //---- name for DataWindow and indicator subwindow label short_name="sSto(" + KPeriod + "," + DPeriod + "," + Slowing + ")"; IndicatorShortName(short_name); SetIndexLabel(0, short_name); SetIndexLabel(1, "Signal"); //---- draw_begin1 = KPeriod+Slowing; draw_begin2 = draw_begin1+DPeriod; SetIndexDrawBegin(0, draw_begin1); SetIndexDrawBegin(1, draw_begin2); //---- return(0); } //+------------------------------------------------------------------+ //| Stochastic oscillator | //+------------------------------------------------------------------+ int start() { int i, k; int counted_bars = IndicatorCounted(); double price; //---- if(Bars <= draw_begin2) return(0); //---- initial zero if(counted_bars < 1) { for(i = 1; i <= draw_begin1; i++) MainBuffer[bars-i] = 0; for(i = 1; i <= draw_begin2; i++) SignalBuffer[bars-i] = 0; } //---- minimums counting i = Bars - KPeriod; if(counted_bars > KPeriod) i = Bars - counted_bars - 1; while(i >= 0) { double min = 1000000; k = i + KPeriod - 1; while(k >= i) { price = Low[k]; if(min > price) min = price; k--; } LowesBuffer = min; i--; } //---- maximums counting i = Bars - KPeriod; if(counted_bars > KPeriod) i = Bars - counted_bars - 1; while(i >= 0) { double max = -1000000; k = i + KPeriod - 1; while(k >= i) { price = High[k]; if(max < price) max = price; k--; } HighesBuffer = max; i--; } //---- %K line i = Bars - draw_begin1; if(counted_bars > draw_begin1) i = Bars - counted_bars - 1; while(i >= 0) { double sumlow = 0.0; double sumhigh = 0.0; for(k = (i + Slowing - 1); k >= i; k--) { sumlow += Close[k] - LowesBuffer[k]; sumhigh += HighesBuffer[k] - LowesBuffer[k]; } if(sumhigh == 0.0) MainBuffer = 100.0; else MainBuffer = sumlow / sumhigh*100; i--; } //---- last counted bar will be recounted if(counted_bars > 0) counted_bars--; int limit = Bars - counted_bars; //---- signal line is simple movimg average for(i = 0; i < limit; i++) SignalBuffer = iMAOnArray(MainBuffer, Bars, DPeriod, 0, MODE_SMMA, i); //---- Статические переменные, в которых хранятся //---- время последнего бара и направление последнего сигнала static int PrevSignal = 0, PrevTime = 0; //---- Если баром для анализа выбран не 0-й, нам нет смысла проверять сигнал //---- несколько раз. Если не начался новый бар, выходим. if(SIGNAL_BAR > 0 && Time[0] <= PrevTime) return(0); //---- Отмечаем, что этот бар проверен PrevTime = Time[0]; //---- Если предыдущий сигнал был СЕЛЛ или это первый запуск (PrevSignal=0) if(PrevSignal <= 0) { if(MainBuffer[sIGNAL_BAR] - 10.0 > 0 && 10.0 - MainBuffer[sIGNAL_BAR+1] >= 0) { PrevSignal = 1; Alert("sStochastic (", Symbol(), ", ", Period(), ") - BUY!!!"); } } if(PrevSignal >= 0) { if(90.0 - MainBuffer[sIGNAL_BAR] > 0 && MainBuffer[sIGNAL_BAR+1] - 90.0 >= 0) { PrevSignal = -1; Alert("sStochastic (", Symbol(), ", ", Period(), ") - SELL!!!"); } } //---- return(0); } //+------------------------------------------------------------------+
-
Из руководства пользователя: ... Так же из этой папки происходит импорт рисунков для текущей торговой операции. Рисунки можно сохранять либо с помощью скрипта screenshot.mq4, в котором можно указать желаемый размер изображения либо можно сохранять в эту папку рисунки сделанные в графическом редакторе в формате .gif. При этом нужно учитывать ,что бы каждый рисунок имел уникальное имя, в противном случае одноименные будут перезаписываться... А можно поподробнее (для чайников) о прикреплении скринов к ордеру...