Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
//| |
//| DigMA.mq4 |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006 Харитонов А.В."
#property link "HaritonovAB@rumbler.ru"
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Blue
#property indicator_color4 Blue
#property indicator_color5 Chocolate
#property indicator_color6 Black
#property indicator_color7 Red
#property indicator_color8 Green
double MA3Speed[];
double MA2Rel[];
double MA1Rel[];
#include <3MAandBB.mq4>
extern double BBmin=8; //Минимальная допустимая граница отклонений MA1-MA2 и FD
extern double AddOut=0;
extern double MALine=5;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
if(IsDllsAllowed()!=false)
{
//---- indicator line
FS1=MA_FilterSize(MA1_period,FB1);
FS2=MA_FilterSize(MA2_period,FB2);
FS3=MA_FilterSize(MA3_period,FB3);
FS4=MA_FilterSize(Band_period,FB4);
FS5=MA_FilterSize(MA3S_period,FB5);
IndicatorBuffers(8);
SetIndexStyle(0,DRAW_LINE,EMPTY,2,Red);
SetIndexBuffer(0,MA1);
SetIndexStyle(1,DRAW_LINE,EMPTY,2,Blue);
SetIndexBuffer(1,MA2);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,UMA2);
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,LMA2);
SetIndexStyle(4,DRAW_LINE,EMPTY,2,Chocolate);
SetIndexBuffer(4,MA3);
SetIndexStyle(5,DRAW_NONE);
SetIndexBuffer(5,MA3Speed);
SetIndexStyle(6,DRAW_NONE);
SetIndexBuffer(6,MA1Rel);
SetIndexStyle(7,DRAW_NONE);
SetIndexBuffer(7,MA2Rel);
SetIndexDrawBegin(0,FS1+1);
SetIndexDrawBegin(1,FS2+1);
SetIndexDrawBegin(2,FS2+1);
SetIndexDrawBegin(3,FS2+1);
SetIndexDrawBegin(4,FS3+1);
SetIndexDrawBegin(5,FS3+1);
SetIndexDrawBegin(6,FS3+1);
SetIndexDrawBegin(7,FS3+1);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll(0, OBJ_ARROW);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i, j,k,rB=0,rSl=0,rSt=0,counted_bars=IndicatorCounted();
int isSell=0, isBuy=0, StopBuy=1,StopSell=1;
int isMA1Relmax=0,isMA1Relmin=0;
int isMA2Relmax=0,isMA2Relmin=0;
int isMA3Speedmax=0,isMA3Speedmin=0;
int isFDmax=0,isFDmin=0;
int isBBUpCross=0,isBBDnCross=0;
string ArrowName;
double haOpen, haHigh, haLow, haClose;
if(IsDllsAllowed()!=false)
{
if (FS1>0&&FS2>0&&FS3>0) {
//----
if(Bars<=2*MathMax(FS1,MathMax(FS2,FS3))) return(0);
//---- initial zero
if(counted_bars<2*MathMax(FS1,MathMax(FS2,FS3)))
for(i=1;i<=0;i++) {MA1[Bars-i]=0.0;MA2[Bars-i]=0.0;MA3[Bars-i]=0. 0;}
//----
i=Bars-2*MathMax(FS1,MathMax(FS2,FS3))-1;
if(counted_bars>=2*MathMax(FS1,MathMax(FS2,FS3))) i=Bars-counted_bars-1;
//ObjectsDeleteAll(0, OBJ_ARROW);
haClose=Close[i];haOpen=Open[i];
while(i>=0)
{
MA1[i]=FMA1(i);
MA2[i]=FMA2(i);
MA3[i]=FMA3(i);
UMA2[i]=MA2[i]+FD(i);
LMA2[i]=MA2[i]-FD(i);
MA3Speed[i]=NormalizeDouble(FMA3Speed(i)*20/Point,1) ;
MA1Rel[i]=NormalizeDouble((MA1[i]-MA3[i])/Point,1);
MA2Rel[i]=NormalizeDouble((MA2[i]-MA3[i])/Point,1);
haOpen=(haOpen+haClose)/2;
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i], MathMax(haOpen, haClose));
haLow=MathMin(Low[i], MathMin(haOpen, haClose));
//----------------------- Флажки --------------------------------+
/*
if(!isMA1Relmax&&MA1Relmax(i)){isMA1Relmax=1;isMA1Relmin=0;}
if(!isMA1Relmin&&MA1Relmin(i)){isMA1Relmax=0;isMA1Relmin=1;}
if(!isMA3Speedmax&&MA3Speedmax(i)){isMA3Speedmax=1;isMA3Speedmin=0;}
if(!isMA3Speedmin&&MA3Speedmin(i)){isMA3Speedmax=0;isMA3Speedmin=1;}
if(!isFDmax&&FDmax(i)){isFDmax=1;isFDmin=0;}
if(!isFDmin&&FDmin(i)){isFDmax=0;isFDmin=1;}
if(BBUpCross(i)){isBBUpCross=1;isBBDnCross=0;}
if(BBDnCross(i)){isBBUpCross=0;isBBDnCross=1;}
*/
//------------------// if(!isSell)-----Блок Анализа ---------------------------+
/*
if(BBok(i)&&MathAbs(MA2Rel[i])>MALine){ // Проверка на допустимость ширины ВВ
//-------------------------------------------------------------------------------
// if(MA3Up){ // Проверка основного направления движения (тренда)
// if(!MA1Up){ // Проверка текущего движения Chart'a
// if(MA1Rel
if(StopSell&&StopBuy)
if(RelMax(i))
{
rSl++;ArrowName="isSell"+rSl;
ObjectCreate(ArrowName,OBJ_ARROW,0,Time[i],High[i]+10*Point);
ObjectSet(ArrowName,OBJPROP_COLOR,Green);
ObjectSet(ArrowName,OBJPROP_ARROWCODE,242); isSell=1;StopSell=0;
}
if(isSell)
if(RelMin(i))
{
rSt++; ArrowName="StopSell"+rSt;
ObjectCreate(ArrowName,OBJ_ARROW,0,Time[i],Low[i]-10*Point);
ObjectSet(ArrowName,OBJPROP_COLOR,Green);
ObjectSet(ArrowName,OBJPROP_ARROWCODE,251);isSell=0;StopSell=1;
}
}
*/
i--;
}
} else Print("Incorrect input parameters. Indicator cannot run.");
} else Print("Library call is not allowed. Indicator cannot run.");
//----
return(0);
}
А какова глубина истории в барах в первом и втором случаях? Это можно выяснить через History Center (F2).
У меня часто терминал виснет, и после принудительного снятия долго висит в тасках (обычно пока руками не сниму).
Иногда виснет наглухо, иногда интерфейс работает (реагирует на мои действия), но котировки стоят.
Возникает это иногда (не всегда) при запуске второй/третьей копии терминала на разных счетах.
В каждом терминале открыто 20-30 чартов и на них по одному эксперту, индикаторов нет.
В экспертах никаких расчетов нет, есть только простой цикл по ордерам на каждом тике и вызов на новом баре iATR и iWPR.
Интересует общий объем памяти и сколько свободной памяти остается после запуска всех терминалов?
Если памяти не хватает, то могут быть проблемы.
Терминалы занимают памяти немного, примерно 6-15 мег оперативки, пик 15-30 мег, ВМ столько же.
Свопинг тоже по минимуму работает на компе, проц не загружен.
Общий объем занятой сейчас памяти 420Мб, т.е. своп небольшой.
Операционка XP Pro SP2 со всеми апдейтами.
Канал ADSL на 8Мбит.
Глубина истории небольшая - 3 - 10 тыс. баров
Кстати, большую часть процессорного времени съедает графический интерфейс.
Если запускать терминал как сервис, то процессорного времени съедается в разы меньше.
Мне кажется что тут дело не в ресурсах самого компа, а может быть в связи, или сервер как то блокирует работу из-за большого числа конектов или открытых ордеров (их бывает несколько десятков на одном терминале). Эксперты много запросов на сервер не делают, изредка открытие ордера, изредка на новом часовом баре или при открытии/закрытии позиции модификация тейк-профитов. Между соседними ордерами делается таймаут в несколько секунд.
Лучше ничего не выкладывать, чем обрезки.
Это вообще непонятно что такое:
что оно делает в init() и че за функция _FilterSize() ?
Какие то кучи массивов ... Нафих...
Связь с автором программного пакета
Сергей Ильюхин aka UA9OTY
Email sergey@tibet.ru, ua9oty@qrz.ru
ICQ 7426815
Распространяется бесплатно в соответствии с принципами "AS-IS".