Советники: BILL_VILJAMS_BC.mq4 - Чудо-советник по Биллу Вильямсу

 

BILL_VILJAMS_BC.mq4 - Чудо-советник по Биллу Вильямсу:

Используются только Фракталы и Аллигатор

Author: Sergey Sartakov

 

Уважаемый more.

Ваш советник при компиляции выдаёт:

Function "sign" is not referenced and will be removed from exp-file
Function "iifStr" is not referenced and will be removed from exp-file
Function "orderDirection" is not referenced and will be removed from exp-file

Не оптимизируеися. Не торгует (в тестере).

Подскажите, что исправить. Хочется ваше чудо в деле посмотреть.

 
Lest:

Уважаемый more.

Ваш советник при компиляции выдаёт:

Function "sign" is not referenced and will be removed from exp-file
Function "iifStr" is not referenced and will be removed from exp-file
Function "orderDirection" is not referenced and will be removed from exp-file

Не оптимизируеися. Не торгует (в тестере).

Подскажите, что исправить. Хочется ваше чудо в деле посмотреть.

Оптимизировать там нечего, а торговать должен, если параметр Trade_Allowed = true.

Послал вам в "сообщения" полную сборку этого советника, немного поправил по сравнению с тем, что выложен здесь...

 

Здравствуйте more,

скажите, трал вы не используйте ?

 
а почему сдесь исправленную не выложить. кто тестил выкладывайте картинку
 
ZZZEROXXX:
а почему сдесь исправленную не выложить. кто тестил выкладывайте картинку

Выкладываю.

//+------------------------------------------------------------------+
//| BILL_VILJAMS.mq4 |
//| Copyright © 2010, "more" |
//| "mailto:tradertobe@gmail.com |
//+------------------------------------------------------------------+
//ВСЕ ОЧЕНЬ ПРОСТО: ОТКРЫТИЕ ПЕРВОЙ ПОЗИЦИИ ПРОИЗВОДИТСЯ НА НУЛЕВОМ БАРЕ ПРИ ПРОБОЕ ТЕКУЩЕГО ФРАКТАЛА ВЫШЕ ЗУБОВ АЛЛИГАТОРА.
// ДОПОЛНИТЕЛЬНЫЕ ПОЗИЦИИ В НАПРАВЛЕНИЕ ПЕРВОЙ ПОЗИЦИИ ОТКРЫВАЮТСЯ НА НУЛЕВОМ БАРЕ ПРИ ПРОБОЕ ТЕКУЩЕГО ФРАКТАЛА
// ВЫШЕ ЗУБОВ АЛЛИГАТОРА, НО ЛИШЬ ПРИ УСЛОВИИ, ЕСЛИ ВСЕ ТРИ ЛИНИИ АЛЛИГАТОРА ВЫСТРОИЛИСЬ В ТРЕНД НА НУЛЕВОМ БАРЕ.
// ЗАКРЫТИЕ ВСЕХ ПОЗИЦИЙ ПРИОИЗВОДИТСЯ ПРИ ВОЗНИКНОВЕНИЕ НУЛЕВОГО БАРА ПРИ УСЛОВИЕ, КОГДА ЗАКРЫТИЕ ПЕРВОГО БАРА
// ПРОИЗОШЛО ЗА ПРЕДЕЛАМИ ГУБ/ЗУБОВ/ЧЕЛЮСТИ (ЗАДАЕТСЯ ВНЕШНИМ ПАРАМЕТРОМ) АЛЛИГАТОРА.
// Delta, TakeProfit, StopLoss и Stop_0 заданы для 4-х разрядных котировок, если котировки 5-ти разрядные, то программа сама это обнаруживает
// и умножает заданные величины на 10.

#property copyright "more"
#property link "mailto:tradertobe@gmail.com"
#include <stderror.mqh>
#include <stdlib.mqh>
#include <WinUser32.mqh>
//--
/*
#include <GlobalVariables.mqh>
#include <SetSignales.mqh>
#include <OrdersOpen.mqh>
#include <OrdersClose.mqh> -
#include <OrdersModify.mqh> -
#include <OrdersDelete.mqh> -
#include <AllOrdersInit.mqh> -
#include <SetFractalsValue.mqh> -
#include <GetJTLCloseLevelTrend.mqh> -
#include <GetZeroTargetLines.mqh> -
#include <ServiceFunctions.mqh> -
*/
//+------------------------------------------------------------------+
//| GlobalVariables.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
extern bool TradeAllowed = true; // разрешение на торговлю, если TradeAllowed = false, но есть открытые позиции,
// то они будут закрыта обычным манером - при возникновения сигнала на закрытие,
// однако, новые позиции открываться не будет.
// Поэтому задав TradeAllowed = false, можно идти отдыхать, надеясь что все будет хорошо.
extern double ProfitTarget = 1000.0; // целевая прибыль в валюте депозита, при достижение общей прибылью ProfitTotal этого значения все позиции закрываются
extern int MagicNumber = 5; // при нудевом значение советник принимает за свои все ордера открытые на инструменте, на котором он запущен
extern double Lot = 1; // эти лотом мы будем торговать
// TakeProfit,StopLoss, Stop_0 и Delta заданы для 4-х разрядных котировок, если котировки 5-ти разрядные, то программа сама это обнаруживает
// и умножает заданные величины на 10.
extern int TakeProfit = 0; // 4-х разрядная котировка
extern int StopLoss = 0; // 4-х разрядная котировка
extern int Stop_0 = 0; // 4-х разрядная котировка, при достижение любым из ордеров такого профита в пунктах его стоп-лосс переносится в безубыток.
// Если Stoplevel не позволяет этого сделать, выдается сообщение и звуковой сигнал тревоги.
// Если Stop_0 = 0, то никаких действий по переносу StopLoss-уровня в безубыток не производим.
extern double Stop_0_Zero = 300.0; // когда общая прибыль превысит это значение, стоп-лосы всех ордеров переносятся на линию безубытка ZeroTargetPrice
// Если Stop_0_Zero = 0, никаких действий не производим
extern double ZeroTarget = 100.0; // значение общей прибыли на уровне безубытка ZeroTargetPrice
extern int Delta = 1; // 4-х разрядная котировка, когда цена Bid превысила/опустилась ниже значения верхнего/нижнего фрактала
// на это значение в пунктах, фрактал считается пробитым
// Критерий закрытия всех позиций - выбираться должен только один из этих критериев, в противном случае советник откажется работать
extern bool CloseAllonLIPS = false;
extern bool CloseAllonTEETH = true;
extern bool CloseAllonJAW = false;
// Еще один критерий закрытия всех позиций. Этот критерий имеет приоритет над критериями, указанными выше.
extern double CloseAllonProfitValue = 1000000.0; // при превышение профитом указанной величины в валюте депозита, все позиции закрываются
// Возможно вам захочется принудительно закрыть все позиции независимо от достижения других критериев
extern bool CloseForced = false; // принудительное закрытие всех позиций
extern bool OpenBuyOnly = false; // будут открываться только позиции вверх
extern bool OpenSellOnly = false; // будут открываться только позиции вниз

int Stoplevel; // здесь будет храниться текущий Stoplevel = MarketInfo(Symbol(),MODE_STOPLEVE)

double ProfitTotal;
double ZeroTargetPrice;
double ProfitTargetPrice;
double TicValue;

static bool BUY_Sign = false;
static bool BUY_Stop = false;
static bool SELL_Sign = false;
static bool SELL_Stop = false;

static datetime LastBar = 0;
int bar2, bar1, bar0;
//---
double FractalUpperValue = 0;
datetime FractalUpperTime = 0;
bool FractalUpperHit = false;
double FractalLowerValue = 0;
datetime FractalLowerTime = 0;
bool FractalLowerHit = false;

//---
int jaw_period = 13; //Период усреднения синей линии (челюсти аллигатора).
int jaw_shift = 8; //Смещение синей линии относительно графика цены.
int teeth_period = 8; //Период усреднения красной линии (зубов аллигатора).
int teeth_shift = 5; //Смещение красной линии относительно графика цены.
int lips_period = 5; //Период усреднения зеленой линии (губ аллигатора).
int lips_shift = 3; //Смещение зеленой линии относительно графика цены.
int ma_method = MODE_SMMA; //Метод усреднения. Может быть любым из значений методов скользящего среднего (Moving Average).
int applied_price = PRICE_MEDIAN; //Используемая цена. Может быть любой из ценовых констант.
//mode - Источник данных, идентификатор одной из линий индикатора. Mожет быть любой из следующих величин:
//MODE_GATORJAW - синяя линия (линия челюсти аллигатора),
//MODE_GATORTEETH - красная линия (линия зубов аллигатора),
//MODE_GATORLIPS - зеленая линия (линия губ аллигатора).
double Jaw_0;
double Jaw_1;
double Jaw_2;

double Teeth_0;
double Teeth_1;
double Teeth_2;

double Lips_0;
double Lips_1;
double Lips_2;

bool TrendUp0; // TrendUp0 = true if (Lips_0 > Teeth_0 && Teeth_0 > Jaw_0)
bool TrendDown0; // TrendDown0 = true if (Lips_0 < Teeth_0 && Teeth_0 < Jaw_0)

bool TrendUp1; // TrendUp1 = true if (Lips_1 > Teeth_1 && Teeth_1 > Jaw_1)
bool TrendDown1; // TrendDown1 = true if (Lips_1 < Teeth_1 && Teeth_1 < Jaw_1)

bool TrendUp2; // TrendUp2 = true if (Lips_2 > Teeth_2 && Teeth_2 > Jaw_2)
bool TrendDown2; // TrendDown2 = true if (Lips_2 < Teeth_2 && Teeth_2 < Jaw_2)

double CloseLevel; // зависит от внешних параметров CloseAllonLIPS, CloseAllonTEETH, CloseAllonJAW

int _ExpertOrdersTotal; //общее количество ордеров, принадлежащих эксперту
int _ExpertOrdersBuy;
int _ExpertOrdersSell;
int _ExpertOrdersBuyStop;
int _ExpertOrdersSellStop;
int _ExpertOrdersBuyLimit;
int _ExpertOrdersSellLimit;

// массивы, в которых будут хранитсья характеристики ордеров при входе по текущему тику:
int _OrderTicket[], _OrderType[];
double _OrderLots[], _OrderOpenPrice[], _OrderStopLoss[], _OrderTakeProfit[];
double _OrderProfit[], _OrderSwap[], _OrderCommission[];
datetime _OrderOpenTime[], _OrderExpiration[];
string _OrderComment[];
int _OrderMagicNumber[];

color Order_Clr;
#define ORDER_BUY_CLR Blue
#define ORDER_SELL_CLR Red

string OrderOpenSetOkMes = " - Открыт/установлен успешно";
string OrderOpenSetErrorMes = " - Ошибка открытия/установки";
string OrderOpenStoplevel_ErrorMes = " - Ошибка открытия: StopLoss/TakeProfit меньше текущего Stoplevel=";

string OrderModifyOkMes = " - Модифицирован успешно";
string OrderModifyErrorMes = " - Ошибка при модификации";
string OrderModifyStop_0_ErrorMes = " - Ошибка при модификации: Stop_0 меньше текущего Stoplevel=";
string OrderModifyZeroPrice_ErrorMes = " - Ошибка при модификации: разница между текущей ценой и ZeroPrice меньше текущего Stoplevel=";

string OrderDeleteOkMes = " - Удален успешно";
string OrderDeleteErrorMes = " - Ошибка при удалении";

string OrderCloseOkMes = " - Закрыт успешно";
string OrderCloseErrorMes = " - Ошибка при закрытии";

string CloseParmErrorMes="Неверно заданы параметры закрытия позиций CloseAllonLIPS,CloseAllonTEETH,CloseAllonJAW,должен бать задан только один критерий";
string CloseForcedParmErrorMes="Неверно задан параметр принудительного закрытия всех позиций CloseForced, на старте этот параметр д.б. равен false";
string OnlyTradeParmErrorMes="Неверно заданы параметры односторонней торговли OpenBuyOnly, OpenSellOnly, только один из них д.б. true";
string Stop_0Stop_0_ZeroParmErrorMes="Неверно заданы параметры Stop_0, Stop_0_Zero, только один из может быть отличным от нуля";
string ParmsErrorsMes="Ошибки в задание значений внешних параметров, советник не работает !";
string ParmsOKReadyMes="Внешние параметры заданы верно,Советник работает и готов открывать позиции - TradeAllowed = true";
string ParmsOKNotReadyMes="Внешние параметры заданы верно,Советник работает, но торговля запрещена - TradeAllowed = false";

int TradeDirection;
int LastError;
int i;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
AllOrdersInit(MagicNumber);
SetSignales(BUY_Sign, BUY_Stop, SELL_Sign, SELL_Stop, LastBar, bar2, bar1, bar0 );
if (OrdersOpen(BUY_Sign, SELL_Sign)) return(0);

AllOrdersInit(MagicNumber);
if (OrdersClose(BUY_Stop, SELL_Stop ) ) return(0);

AllOrdersInit(MagicNumber);
GetZeroTargetLines();
if (OrdersModify()) return(0);
//----
return(0); // возвращаем управление терминалу
}
// end of int start()
//**************************************************************************************************************************
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if (Digits == 5 ||Digits == 3 )
{
Delta *=10;
TakeProfit *=10;
StopLoss *=10;
Stop_0 *=10;
}
LastBar = 0;
TicValue = MarketInfo(Symbol(),MODE_TICKVALUE);
// Проверим правильность заданий внешних параметров работы советника
bool parmserrors = false;
i = 0;
if (CloseAllonLIPS) i++;
if (CloseAllonTEETH) i++;
if (CloseAllonJAW) i++;
if (i != 1) {Print(CloseParmErrorMes); parmserrors = true;}
//
// Проверим правильность задания параметра принудительного закрытия всех позиций
// if (CloseForced) {Print(CloseForcedParmErrorMes); parmserrors = true;}
//----
// Проверим правильность задания параметров торговли в одну сторону - OpenBuyOnly OpenSellOnly
if (OpenBuyOnly && OpenSellOnly) {Print(OnlyTradeParmErrorMes); parmserrors = true;}
//--- // Если Stop_0 = 0, то никаких действий по переносу StopLoss-уровня в безубыток не производим.
// Проверим правильность задания параметров Stop_0 и Stop_0_Zero - только один из этих параметров может быть отличным от нуля
if (Stop_0 != 0 && Stop_0_Zero != 0) {Print(Stop_0Stop_0_ZeroParmErrorMes); parmserrors = true;}
//---
if (parmserrors) {TradeAllowed = false; PlaySound("alert.wav"); Print(ParmsErrorsMes);}
else
if (TradeAllowed) {PlaySound("ok.wav"); Print(ParmsOKReadyMes);}
else {PlaySound("ok.wav"); Print(ParmsOKNotReadyMes);}
//---
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("FractalUpper");
ObjectDelete("FractalLower");
ObjectDelete("ZeroPrice");
ObjectDelete("ProfitTargetPrice");
//----
return(0);
}
//+------------------------------------------------------------------+
//| SetSignales.mq4 |
//| Copyright © 2010, "more" |
//| "mailto:tradertobe@gmail.co |
//+------------------------------------------------------------------+
//************************************************************
void SetSignales(bool& BUY_Sign, bool& BUY_Stop, bool& SELL_Sign, bool& SELL_Stop, int& LastBar, int& bar2, int& bar1,int& bar0 )
{
datetime IBARS = iTime(NULL,0,0);
//---
if (LastBar != IBARS) // проверка на начало нового бара
{
LastBar = IBARS; // новый бар
SetFractalsValue();
GetJTLCloseLevelTrend();
//---
if (Close[1] < CloseLevel) BUY_Stop = true;

if (Close[1] > CloseLevel) SELL_Stop = true;
} // if (LastBar != IBARS)
else
{ // просто тик на нулевом баре
//---
GetJTLCloseLevelTrend();
//---
double BuyLevel = FractalUpperValue + Delta*Point;
double SellLevel = FractalLowerValue - Delta*Point;
if (!FractalUpperHit)
{
// Сигнал на открытие первой позиции в торговом цикле вверх
if (_ExpertOrdersTotal ==0 && (Bid > BuyLevel) && (BuyLevel > Teeth_0))
{
BUY_Sign = true;
FractalUpperHit = true; ObjectSet("FractalUpper",OBJPROP_COLOR,White);
return;
}
// Сигнал на открытие доливочных поозиций в торговом цикле вверх
if (_ExpertOrdersTotal >= 1 && (Bid > BuyLevel) && (BuyLevel > Teeth_0) && TrendUp0)
{
BUY_Sign = true;
FractalUpperHit = true; ObjectSet("FractalUpper",OBJPROP_COLOR,White);
return;
}
} // if (!FractalUpperHit)
//---
if (!FractalLowerHit)
{
// Сигнал на открытие первой позиции в торговом цикле вниз
if (_ExpertOrdersTotal ==0 && (Bid < SellLevel) && (SellLevel < Teeth_0))
{
SELL_Sign = true;
FractalLowerHit = true; ObjectSet("FractalLower",OBJPROP_COLOR,White);
return;
}
// Сигнал на открытие доливочных позиций в торговом цикле вниз
if (_ExpertOrdersTotal >= 1 && (Bid < SellLevel) && (SellLevel < Teeth_0) && TrendDown0)
{
SELL_Sign = true;
FractalLowerHit = true; ObjectSet("FractalLower",OBJPROP_COLOR,White);
return;
}
} // if (!FractalLowerHit)
// Может так случиться, что общая прибыль превысит значение, заданное во внешней переменной -
// extern double ProfitTarget = 3000.0 - целевая прибыль в валюте депозита, когда общая прибылью ProfitTotal превысит этог значения все позиции закрываются
// если ProfitTarget = 0, этот механизь закрытия торгового цикла не используется
ProfitTotal = 0;
for (i = 0; i < _ExpertOrdersTotal; i++)
{
ProfitTotal += _OrderProfit[i];
}
Comment("Прибыль в валюте депозита = ",NormalizeDouble(ProfitTotal,0));
if (ProfitTarget != 0 && ProfitTotal > ProfitTarget)
{
if (_OrderType[0] == OP_BUY) BUY_Stop = true;
if (_OrderType[0] == OP_SELL) SELL_Stop = true;
}
//---
// Если задано значение параметра советника extern bool CloseForced = true(принудительное закрытие всех позиций),
// то все позиции будут закрыты одна за другой. После закрытия всех позиций советник возобновляет работу в обычном режиме,
// однако, чтобы избежать случайностей инициируйте советник значением CloseForced = false
if (CloseForced && _ExpertOrdersTotal !=0)
{
if (_OrderType[0] == OP_BUY) BUY_Stop = true;
if (_OrderType[0] == OP_SELL) SELL_Stop = true;
CloseForced = false;
Comment("Принудительное закрытие всех позиций согласно значения CloseForced=true"+"\n"+
"После закрытия всех позиций обязательно инициируйте советник со зачением CloseForced=false");
}
//---
} // else
return;
} // end of void SetSignales ()
//************************************************************

// Может так случиться, что сигнал на закрытие торговго цикла еще не появился, но уже открылась первая
// позиция торгового цикла в противоположном направление.
// Как только мы обнаружим такую ситуацию, немедленно формируем сигнал на закрытие всех позиций предыдущего торгового цикла
/*
if (_ExpertOrdersBuy >= 1 && _ExpertOrdersSell >= 1)
{
if (_OrderType[_ExpertOrdersTotal-1] == OP_BUY) SELL_Stop = true;
if (_OrderType[_ExpertOrdersTotal-1] == OP_SELL) BUY_Stop = true;
}
*/
//---
//+------------------------------------------------------------------+
//| OrdersOpen.mq4 |
//| Copyright © 2010, "more" |
//| "mailto:tradertobe@gmail.com |
//+------------------------------------------------------------------+
//+---------------------------------------------------------------------------------------------------------------+
//| функция открывает ордера |
//+---------------------------------------------------------------------------------------------------------------+
bool OrdersOpen(bool& BUY_Sign, bool& SELL_Sign) // return(true) -функция выполнила все что могла и управление следует передать терминалу
{ // return(false)-в вызове функции не было необходимости, управление следует передать далее по телу функции start()
if (!BUY_Sign && !SELL_Sign) return(false);
//----
if (TradeAllowed)
{
Stoplevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if ((StopLoss != 0 && StopLoss < Stoplevel) || (TakeProfit != 0 && TakeProfit < Stoplevel))
{
PlaySound("alert.wav");
Print(OrderOpenStoplevel_ErrorMes+Stoplevel);
return(false);
} // if ((StopLoss != 0 && StopLoss < Stoplevel) || (TakeProfit != 0 && TakeProfit < Stoplevel))
i = 0; // ради удобства
TradeDirection = iif(BUY_Sign,+1,-1);
_OrderType [i] = iif(TradeDirection < 0,OP_SELL,OP_BUY);
_OrderLots [i] = Lot;
_OrderOpenPrice [i] = iif(_OrderType[i]==OP_BUY,Ask,Bid);

_OrderStopLoss [i] = iif(_OrderType[i]==OP_BUY,_OrderOpenPrice[i] - StopLoss * Point,_OrderOpenPrice[i] + StopLoss * Point);
_OrderStopLoss [i] = iif( _OrderStopLoss[i]==_OrderOpenPrice[i],0,_OrderStopLoss[i]);

_OrderTakeProfit[i] = iif(_OrderType[i]==OP_BUY,_OrderOpenPrice[i] + TakeProfit*Point,_OrderOpenPrice[i] - TakeProfit*Point);
_OrderTakeProfit[i] = iif(_OrderTakeProfit[i] == _OrderOpenPrice[i],0,_OrderTakeProfit[i]);

_OrderMagicNumber[i] = MagicNumber;
_OrderComment [i] = " ";
Order_Clr = iif(TradeDirection > 0,ORDER_BUY_CLR,ORDER_SELL_CLR);
bool temp = false;
if (_OrderSend())
{
BUY_Sign = iif(TradeDirection == +1,false,BUY_Sign );
SELL_Sign = iif(TradeDirection == -1,false,SELL_Sign);
temp = true;
}
return(temp);
} // if (TradeAllowed)
//----
return(false); // вызов функции не был необходим, управление следует передать далее по телу функции start()
} // bool OrdersOpen(bool& BUY_Sign, bool& SELL_Sign)
//+---------------------------------------------------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| функция посылает на ТОРГОВЫЙ СЕРВЕР команды на немедленное |
//| открытие ордера или на установку лимитного ордера |
//+------------------------------------------------------------------+
bool _OrderSend()
{
if (IsTradeContextBusy()) { PlaySound("alert.wav"); return(false);} // торговый поток занят, подождем следующего тика
_OrderTicket[i]=
OrderSend(Symbol(),_OrderType [i]
,_OrderLots [i]
,_OrderOpenPrice [i],3
,_OrderStopLoss [i]
,_OrderTakeProfit [i]
,_OrderComment [i]
,_OrderMagicNumber[i],0,Order_Clr);
if (_OrderTicket[i] < 0)
{
LastError = GetLastError();
Print("("+_OrderMagicNumber[i]+")"+_OrderComment[i]+OrderOpenSetErrorMes+" : "+ LastError+" - "+ErrorDescription(LastError));
PlaySound("alert.wav");
return(false);
}
Print("("+_OrderMagicNumber[i]+")"+_OrderComment[i]+"("+_OrderTicket[i]+")"+OrderOpenSetOkMes);
PlaySound("ok.wav");
return(true);
} // end of bool _OrderSend()
//+---------------------------------------------------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| OrdersClose.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------------------------------------------------+
//| функция производит закрытие всех открытых ордеров BUY или | всех открытых ордеров SELL
//+----------------------------------------------------------------------------------------------------------------------+
bool OrdersClose(bool& BUY_Stop, bool& SELL_Stop ) // return(true) -функция выполнила все что могла и управление следует передать терминалу
{ // return(false)-в вызове функции не было необходимости, управление следует передать далее по телу функции start()
if (!BUY_Stop && !SELL_Stop) return(false);
if (BUY_Stop && _ExpertOrdersBuy == 0) {BUY_Stop = false; return(false);}
if (SELL_Stop && _ExpertOrdersSell == 0) {SELL_Stop = false; return(false);}

i = 0;
TradeDirection = iif(BUY_Stop,+1,-1);
_OrderOpenPrice [i] = iif(TradeDirection == +1,Bid,Ask);
Order_Clr = iif(TradeDirection > 0,ORDER_BUY_CLR,ORDER_SELL_CLR);
if (_OrderClose()) return(true);
return(false);
} // end of if ( (BUY_Stop && _ExpertOrdersBuy != 0) || (SELL_Stop && _ExpertOrdersSell != 0))
//+--------------------------------------------------------------------+
//| функция посылает на ТОРГОВЫЙ СЕРВЕР команду на немедленное |
//| закрытие открытогоо ордера |
//+--------------------------------------------------------------------+
bool _OrderClose()
{
if (IsTradeContextBusy()) { PlaySound("alert.wav"); return(false);} // торговый поток занят, подождем следующего тика
if (OrderClose(_OrderTicket [i]
,_OrderLots [i]
,_OrderOpenPrice[i],3
,Order_Clr))
{
Print("("+_OrderMagicNumber[i]+")"+_OrderComment[i]+"("+_OrderTicket[i]+")"+OrderCloseOkMes);
PlaySound("ok.wav");
return(true);
}
LastError = GetLastError();
Print("("+_OrderMagicNumber[i]+")"+_OrderComment[i]+"("+_OrderTicket[i]+")"+OrderCloseErrorMes+" : "+ LastError+" - "+ErrorDescription(LastError));
PlaySound("alert.wav");
return(false);
} // end of bool _OrderClose()
//************************************************************************************************************************************
//+------------------------------------------------------------------+
//| OrdersModify.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//+---------------------------------------------------------------------------------------+
//| функция производит модификацию ордеров исходя из результатов анализа текущей ситуации |
//+---------------------------------------------------------------------------------------+
bool OrdersModify() // return(true) -функция выполнила все что могла и управление следует передать терминалу
{ // return(false)-в вызове функции не было необходимости, управление следует передать далее по телу функции start()
if (_ExpertOrdersTotal == 0) return(false);
//--
ProfitTotal = 0;
for (i = 0; i < _ExpertOrdersTotal; i++)
{
ProfitTotal += _OrderProfit[i];
}
Comment("Прибыль в валюте депозита = ",NormalizeDouble(ProfitTotal,0));
//--
// Если Stop_0 != 0, установим стоп-лосы всех открытых позиций в безубыток
if (Stop_0 != 0)
{
for (i = 0; i < _ExpertOrdersTotal; i++)
{
TradeDirection = iif(_OrderType[i] == OP_BUY,+1,-1);
double CurrentPrice = iif(TradeDirection == +1,Bid,Ask);
int ProfitPips = iif(TradeDirection == +1,(CurrentPrice - _OrderOpenPrice[i])/Point,(_OrderOpenPrice[i] - CurrentPrice)/Point);
if (ProfitPips < Stop_0) continue;
Stoplevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (Stop_0 <= Stoplevel)
{
PlaySound("alert.wav");
Print("("+MagicNumber+")"+_OrderComment[i]+"("+_OrderTicket[i]+")"+OrderModifyStop_0_ErrorMes+Stoplevel);
continue;
}
if (_OrderStopLoss [i] == _OrderOpenPrice [i]) continue;
_OrderStopLoss [i] = _OrderOpenPrice [i];
bool temp = _OrderModify();
break;
} // for (i = 0; i < _ExpertOrdersTotal; i++)
return(temp);
} // if (Stop_0 != 0)
// Когда общая прибыль ProfitTotal превысмт значение extern double Stop_0_Zero, стоп-лосы всех ордеров переносятся на линию безубытка ZeroTargetPrice
if (ProfitTotal > Stop_0_Zero && Stop_0_Zero != 0)
{
for (i = 0; i < _ExpertOrdersTotal; i++)
{
TradeDirection = iif(_OrderType[i] == OP_BUY,+1,-1);
CurrentPrice = iif(TradeDirection == +1,Bid,Ask);
int ZeroPips = iif(TradeDirection == +1,(CurrentPrice - ZeroTargetPrice)/Point,(ZeroTargetPrice - CurrentPrice)/Point);
Stoplevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (ZeroPips <= Stoplevel)
{
PlaySound("alert.wav");
Print("("+MagicNumber+")"+_OrderComment[i]+"("+_OrderTicket[i]+")"+OrderModifyZeroPrice_ErrorMes+Stoplevel);
continue;
}
if (_OrderStopLoss [i] == ZeroTargetPrice) continue;
_OrderStopLoss [i] = ZeroTargetPrice;
temp = _OrderModify();
break;
} // for (i = 0; i < _ExpertOrdersTotal; i++)
return(temp);
} // if (ProfitTotal > Stop_0_Zero)
} // end of bool OrdersModify()
//+--------------------------------------------------------------------+
//| функция посылает на ТОРГОВЫЙ СЕРВЕР команду на немедленную |
//| модификацию открытого или лимитного ордера |
//+--------------------------------------------------------------------+
bool _OrderModify()
{
if (IsTradeContextBusy()) { PlaySound("alert.wav"); return(false);} // торговый поток занят, подождем следующего тика
if (OrderModify(_OrderTicket [i]
,_OrderOpenPrice [i]
,_OrderStopLoss [i]
,_OrderTakeProfit[i]
,0
,CLR_NONE))
{
Print("("+MagicNumber+")"+_OrderComment[i]+"("+_OrderTicket[i]+")"+OrderModifyOkMes);
PlaySound("ok.wav");
return(true);
}
LastError = GetLastError(); if (LastError == ERR_NO_RESULT) return(true);
Print("("+MagicNumber+")"+_OrderComment[i]+"("+_OrderTicket[i]+")"+OrderModifyErrorMes+" : "+ LastError+" - "+ErrorDescription(LastError));
PlaySound("alert.wav");
return(false);
} // end of bool _OrderModify()
//+---------------------------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| AllOrdersInit.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//| функция производит формирование массивов, каждый из которых представляет одно |
//| поле ордера, принадлежащего эксперту. таким образом, множество элементов массивов с |
//| одним значение индекса представляет ордер. массивы отсортированы в порядке возрастания тикета |
//| размерность массивов = _ExpertOrdersTotal + 1 |
//| последние элементы массивов будут использоваться нами для формирования данных при открытии/установки|
//| нового ордера |
//+----------------------------------------------------------------------------------------------------+
//"mailto:komposterius@mail.ru" - Андрей Хатимлянский - автор этой функции
//http://www.mql4.com/ru/users/komposter Андрей Хатимлянский
void AllOrdersInit( int magic )
{
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
_ExpertOrdersTotal = 0; //общее количество ордеров, принадлежащих эксперту
_ExpertOrdersBuy = 0; //
_ExpertOrdersSell = 0; //
_ExpertOrdersBuyStop = 0; //
_ExpertOrdersSellStop = 0; //
_ExpertOrdersBuyLimit = 0; //
_ExpertOrdersSellLimit = 0; //
// изменяем размеры массивов под текущее кол-во позиций
// (если _OrdersTotal = 0, меняем размер массивов на 1)
int temp_value = MathMax( _OrdersTotal+1, 1 );
ArrayResize( _OrderTicket, temp_value );
ArrayResize( _OrderType, temp_value );
ArrayResize( _OrderLots, temp_value );
ArrayResize( _OrderOpenPrice, temp_value );
ArrayResize( _OrderStopLoss, temp_value );
ArrayResize( _OrderTakeProfit, temp_value );
ArrayResize( _OrderOpenTime, temp_value );
ArrayResize( _OrderProfit, temp_value );
ArrayResize( _OrderSwap, temp_value );
ArrayResize( _OrderCommission, temp_value );
ArrayResize( _OrderComment, temp_value );
ArrayResize( _OrderExpiration, temp_value );
ArrayResize( _OrderMagicNumber, temp_value );


// обнуляем массивы
ArrayInitialize( _OrderTicket, 0 );
ArrayInitialize( _OrderType, 0 );
ArrayInitialize( _OrderLots, 0 );
ArrayInitialize( _OrderOpenPrice, 0 );
ArrayInitialize( _OrderStopLoss, 0 );
ArrayInitialize( _OrderTakeProfit, 0 );
ArrayInitialize( _OrderOpenTime, 0 );
ArrayInitialize( _OrderProfit, 0 );
ArrayInitialize( _OrderSwap, 0 );
ArrayInitialize( _OrderCommission, 0 );
ArrayInitialize( _OrderExpiration, 0 );
ArrayInitialize( _OrderMagicNumber, 0 );

for ( int z = 0; z < _OrdersTotal; z ++ )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print("OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
continue;
}
if (magic == 0)
{
if (OrderSymbol() == Symbol() )
{
// заполняем массив тикетов ордеров, принадлежащих експерту
_OrderTicket [_ExpertOrdersTotal] = OrderTicket();
_ExpertOrdersTotal ++;
switch(OrderType())
{
case OP_BUY : _ExpertOrdersBuy++ ; break;
case OP_SELL : _ExpertOrdersSell++ ; break;
case OP_BUYSTOP : _ExpertOrdersBuyStop++ ; break;
case OP_SELLSTOP : _ExpertOrdersSellStop++ ; break;
case OP_BUYLIMIT : _ExpertOrdersBuyLimit++ ; break;
case OP_SELLLIMIT : _ExpertOrdersSellLimit++ ; break;
}
} // if (OrderSymbol() == Symbol() )
} // if (magic == 0)
else
if (OrderMagicNumber() == magic && OrderSymbol() == Symbol() )
{
{
// заполняем массив тикетов ордеров, принадлежащих експерту
_OrderTicket [_ExpertOrdersTotal] = OrderTicket();
_ExpertOrdersTotal ++;
switch(OrderType())
{
case OP_BUY : _ExpertOrdersBuy++ ; break;
case OP_SELL : _ExpertOrdersSell++ ; break;
case OP_BUYSTOP : _ExpertOrdersBuyStop++ ; break;
case OP_SELLSTOP : _ExpertOrdersSellStop++ ; break;
case OP_BUYLIMIT : _ExpertOrdersBuyLimit++ ; break;
case OP_SELLLIMIT : _ExpertOrdersSellLimit++ ; break;
}
} // if (OrderMagicNumber() == magic && OrderSymbol() == Symbol() )
} // else
} // for ( int z = 0; z < _OrdersTotal; z ++ )
// изменяем размеры массивов под кол-во позиций, принадлежащих эксперту + одна
// (если _ExpertOrdersTotal = 0, меняем размер массивов на 1)
temp_value = MathMax( _ExpertOrdersTotal+1, 1 );
ArrayResize( _OrderTicket, temp_value );
ArrayResize( _OrderType, temp_value );
ArrayResize( _OrderLots, temp_value );
ArrayResize( _OrderOpenPrice, temp_value );
ArrayResize( _OrderStopLoss, temp_value );
ArrayResize( _OrderTakeProfit, temp_value );
ArrayResize( _OrderOpenTime, temp_value );
ArrayResize( _OrderProfit, temp_value );
ArrayResize( _OrderSwap, temp_value );
ArrayResize( _OrderCommission, temp_value );
ArrayResize( _OrderComment, temp_value );
ArrayResize( _OrderExpiration, temp_value );

_OrderTicket[_ExpertOrdersTotal] = 99999999;// при сортировке этот пустой элемент будет последним
ArraySort(_OrderTicket); // получим хронологический порядок...
//------------------------------------------------------------------------------------------------------------------------
for ( z = 0; z < _ExpertOrdersTotal; z ++ )
{
if ( !OrderSelect( _OrderTicket[z], SELECT_BY_TICKET ) )
{
_GetLastError = GetLastError();
Print("OrderSelect( ", _OrderTicket[z], ", SELECT_BY_TICKET ) - Error #", _GetLastError );
continue;
}
// заполняем остальные массивы
_OrderType [z] = OrderType();
_OrderLots [z] = NormalizeDouble( OrderLots(), 2 );
_OrderOpenPrice [z] = NormalizeDouble( OrderOpenPrice(), Digits );
_OrderStopLoss [z] = NormalizeDouble( OrderStopLoss(), Digits );
_OrderTakeProfit [z] = NormalizeDouble( OrderTakeProfit(), Digits );
_OrderOpenTime [z] = OrderOpenTime();
_OrderProfit [z] = NormalizeDouble( OrderProfit(), 2 );
_OrderSwap [z] = NormalizeDouble( OrderSwap(), 2 );
_OrderCommission [z] = NormalizeDouble( OrderCommission(), 2 );
_OrderComment [z] = OrderComment();
_OrderExpiration [z] = OrderExpiration();
_OrderMagicNumber [z] = OrderMagicNumber();

}
//------------------------------------------------------------------------------------------------------------------------
return;
} // AllOrdersInit( int magic )
//+------------------------------------------------------------------+
//| SetFractalsValue.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
void SetFractalsValue()
{
datetime FractalUpperTimeOld = FractalUpperTime;
datetime FractalLowerTimeOld = FractalLowerTime;

FractalUpperValue = 0;
FractalLowerValue = 0;
//---
int i = 0;
while (FractalUpperValue == 0)
{
FractalUpperValue = iFractals(NULL, 0, MODE_UPPER, i);
i++;
}
int FractalUpperBar = i - 1;
//---
i = 0;
while (FractalLowerValue == 0)
{
FractalLowerValue = iFractals(NULL, 0, MODE_LOWER, i);
i++;
}
int FractalLowerBar = i - 1;
//---
if (ObjectFind("FractalUpper")<0)
{
ObjectCreate("FractalUpper",OBJ_TREND,0,Time[FractalUpperBar+1],FractalUpperValue,Time[FractalUpperBar-1],FractalUpperValue);
ObjectSet("FractalUpper",OBJPROP_COLOR,Blue);
ObjectSet("FractalUpper",OBJPROP_STYLE,STYLE_SOLID);
}
FractalUpperTime = Time[FractalUpperBar];
if (FractalUpperTime != FractalUpperTimeOld)
{
if (Bid > FractalUpperValue){FractalUpperHit = true; ObjectSet("FractalUpper",OBJPROP_COLOR,White);}

else {FractalUpperHit = false; ObjectSet("FractalUpper",OBJPROP_COLOR,Blue); }

ObjectMove("FractalUpper",0,Time[FractalUpperBar+1],FractalUpperValue);
ObjectMove("FractalUpper",1,Time[FractalUpperBar-1],FractalUpperValue);
}
//---
//---
if (ObjectFind("FractalLower")<0)
{
ObjectCreate("FractalLower",OBJ_TREND,0,Time[FractalLowerBar+1],FractalLowerValue,Time[FractalLowerBar-1],FractalLowerValue);
ObjectSet("FractalLower",OBJPROP_COLOR,Red);
ObjectSet("FractalLower",OBJPROP_STYLE,STYLE_SOLID);
}
FractalLowerTime = Time[FractalLowerBar];
if (FractalLowerTime != FractalLowerTimeOld)
{
if (Bid < FractalLowerValue) {FractalLowerHit = true; ObjectSet("FractalLower",OBJPROP_COLOR,White);}
else {FractalLowerHit = false; ObjectSet("FractalLower",OBJPROP_COLOR,Red); }

ObjectMove("FractalLower",0,Time[FractalLowerBar+1],FractalLowerValue);
ObjectMove("FractalLower",1,Time[FractalLowerBar-1],FractalLowerValue);
}
//---
} // void SetFractalsValue()
//+------------------------------------------------------------------+
//| GetJTLCloseLevelTrend.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
void GetJTLCloseLevelTrend()
{
Jaw_0 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORJAW,0);
Teeth_0 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORTEETH,0);
Lips_0 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORLIPS,0);

Jaw_1 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORJAW,1);
Teeth_1 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORTEETH,1);
Lips_1 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORLIPS,1);

Jaw_2 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORJAW,2);
Teeth_2 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORTEETH,2);
Lips_2 =
iAlligator(NULL,0,jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift,ma_method,applied_price,MODE_GATORLIPS,2);

if (CloseAllonLIPS) CloseLevel = Lips_1;
if (CloseAllonTEETH) CloseLevel = Teeth_1;
if (CloseAllonJAW) CloseLevel = Jaw_1;

if (Lips_0 > Teeth_0 && Teeth_0 > Jaw_0) TrendUp0 = true; else TrendUp0 = false;
if (Lips_0 < Teeth_0 && Teeth_0 < Jaw_0) TrendDown0 = true; else TrendDown0 = false;

if (Lips_1 > Teeth_1 && Teeth_1 > Jaw_1) TrendUp1 = true; else TrendUp1 = false;
if (Lips_1 < Teeth_1 && Teeth_1 < Jaw_1) TrendDown1 = true; else TrendDown1 = false;

if (Lips_2 > Teeth_2 && Teeth_2 > Jaw_2) TrendUp2 = true; else TrendUp2 = false;
if (Lips_2 < Teeth_2 && Teeth_2 < Jaw_2) TrendDown2 = true; else TrendDown2 = false;

return;

} // void GetJawTeethLips()
//+------------------------------------------------------------------+
//| GetZeroTargetLines.mq4 |
//| Copyright © 2010, "more" |
//| "mailto:tradertobe@gmail.com |
//+------------------------------------------------------------------+
int GetZeroTargetLines()
{
if (_ExpertOrdersTotal == 0)
{
ObjectDelete("ZeroTargetPrice");
ObjectDelete("ProfitTargetPrice");
return;
}
double sum=0;
double sum1=0;
double ZeroTargetPriceOld;
double ProfitTargetPriceOld;
ZeroTargetPriceOld = ZeroTargetPrice;
ProfitTargetPriceOld = ProfitTargetPrice;
for (i=0; i < _ExpertOrdersTotal; i++)
{
if (_OrderType[i] == OP_BUY)
{
sum = sum + _OrderLots[i] * _OrderOpenPrice[i] * TicValue;
sum1 = sum1 + _OrderLots[i] * TicValue ;
}
if (_OrderType[i] == OP_SELL)
{
sum = sum - _OrderLots[i] * _OrderOpenPrice[i] * TicValue;
sum1 = sum1 - _OrderLots[i] * TicValue ;
}
} // for (i=0; i < _ExpertOrdersTotal; i++)
if (sum1 == 0) return;
//---
ZeroTargetPrice = (ZeroTarget * Point + sum)/sum1;
ZeroTargetPrice = NormalizeDouble(ZeroTargetPrice,Digits);
if (ObjectFind("ZeroTargetPrice")<0)
{
ObjectCreate("ZeroTargetPrice",OBJ_HLINE,0,D'2007.05.01 00:00:00',ZeroTargetPrice);
ObjectSet ("ZeroTargetPrice",OBJPROP_COLOR,White);
ObjectSet ("ZeroTargetPrice",OBJPROP_STYLE,STYLE_SOLID);
}
if (ZeroTargetPrice != ZeroTargetPriceOld)
{
PlaySound("Ku_ku");
ObjectMove("ZeroTargetPrice",0,D'2007.05.01 00:00:00', ZeroTargetPrice);
}
//---
if (ProfitTarget == 0) return;
ProfitTargetPrice = (ProfitTarget * Point + sum)/sum1;
ProfitTargetPrice = NormalizeDouble(ProfitTargetPrice,Digits);
if (ObjectFind("ProfitTargetPrice")<0)
{
ObjectCreate("ProfitTargetPrice",OBJ_HLINE,0,D'2007.05.01 00:00:00',ProfitTargetPrice);
ObjectSet ("ProfitTargetPrice",OBJPROP_COLOR,Gold);
ObjectSet ("ProfitTargetPrice",OBJPROP_STYLE,STYLE_SOLID);
}
if (ProfitTargetPrice != ProfitTargetPriceOld)
{
PlaySound("Ku_ku");
ObjectMove("ProfitTargetPrice",0,D'2007.05.01 00:00:00', ProfitTargetPrice);
}
//---
return(0);
} // GetZeroTargetLines
//+------------------------------------------------------------------+
//| ServiceFunctions.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//http://www.mql4.com/ru/users/bstone -Крамарь Роман - автор четырех, следующих ниже функций
//+------------------------------------------------------------------+
//| helper functions - Крамарь Роман
//+------------------------------------------------------------------+

int sign( double v )
{
if( v < 0 ) return( -1 );
return( 1 );
}

//+------------------------------------------------------------------+
double iif( bool condition, double ifTrue, double ifFalse )
{
if( condition ) return( ifTrue );

return( ifFalse );
}

//+------------------------------------------------------------------+
string iifStr( bool condition, string ifTrue, string ifFalse )
{
if( condition ) return( ifTrue );

return( ifFalse );
}

//+------------------------------------------------------------------+
int orderDirection()
{
return( 1 - 2 * ( OrderType() % 2 ) );
}
//------------------------------------------------------------------------------------------------------------------------
 

Благодарю! Ну насчет мегапрофитности незнаю. У меня на евробаксе H1 с 2009 года все закончилось обвалом депо 13.03.2009 )) Настройки не менял.


не исключаю кривость своих ручонок =))) канечно

 
ZZZEROXXX:

Благодарю! Ну насчет мегапрофитности незнаю. У меня на евробаксе H1 с 2009 года все закончилось обвалом депо 13.03.2009 )) Настройки не менял.


не исключаю кривость своих ручонок =))) канечно

Попробуй на Н4.
 

Браво more! Действительно чудо! По этой стратегии трудно торговать на волатильном рынке. Попробовал на золоте всё получилось. Эксперт получился великолепным, поздравляю. Погоняю на демо.

Strategy Tester Report
BILL_VILJAMS_1_1
Символ GOLD ()
Период День (D1) 2010.01.04 00:00 - 2011.02.11 00:00 (2010.01.04 - 2011.02.12)
Модель Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры TradeAllowed=true; ProfitTarget=1000; MagicNumber=5; Lot=1; TakeProfit=0; StopLoss=0; Stop_0=0; Stop_0_Zero=300; ZeroTarget=100; Delta=1; CloseAllonLIPS=false; CloseAllonTEETH=true; CloseAllonJAW=false; CloseAllonProfitValue=1000000; CloseForced=false; OpenBuyOnly=false; OpenSellOnly=false;
Баров в истории 1266 Смоделировано тиков 681563 Качество моделирования 50.45%
Ошибки рассогласования графиков 0
Начальный депозит 10000.00
Чистая прибыль 15091.03 Общая прибыль 16411.03 Общий убыток -1320.00
Прибыльность 12.43 Матожидание выигрыша 335.36
Абсолютная просадка 1870.11 Максимальная просадка 7380.96 (45.16%) Относительная просадка 45.16% (7380.96)
Всего сделок 45 Короткие позиции (% выигравших) 16 (100.00%) Длинные позиции (% выигравших) 29 (93.10%)
Прибыльные сделки (% от всех) 43 (95.56%) Убыточные сделки (% от всех) 2 (4.44%)
Самая большая прибыльная сделка 1010.00 убыточная сделка -1230.00
Средняя прибыльная сделка 381.65 убыточная сделка -660.00
Максимальное количество непрерывных выигрышей (прибыль) 42 (15401.26) непрерывных проигрышей (убыток) 1 (-1230.00)
Максимальная непрерывная прибыль (число выигрышей) 15401.26 (42) непрерывный убыток (число проигрышей) -1230.00 (1)
Средний непрерывный выигрыш 22 непрерывный проигрыш 1

Время Тип Ордер Объём Цена S / L T / P Прибыль Баланс
1 2010.01.07 00:00 buy 1 1.00 1139.40 0.00 0.00
2 2010.01.11 00:00 modify 1 1.00 1139.40 1139.50 0.00
3 2010.01.11 00:13 close 1 1.00 1149.50 1139.50 0.00 1009.78 11009.78
4 2010.01.11 00:13 buy 2 1.00 1150.40 0.00 0.00
5 2010.01.11 00:14 close 2 1.00 1149.50 0.00 0.00 -90.00 10919.78
6 2010.01.20 17:17 sell 3 1.00 1119.50 0.00 0.00
7 2010.01.20 17:55 modify 3 1.00 1119.50 1119.40 0.00
8 2010.01.20 18:38 close 3 1.00 1109.40 1119.40 0.00 1010.00 11929.78
9 2010.01.28 04:20 sell 4 1.00 1083.00 0.00 0.00
10 2010.01.28 18:32 modify 4 1.00 1083.00 1082.90 0.00
11 2010.01.28 19:34 s/l 4 1.00 1082.90 1082.90 0.00 10.00 11939.78
12 2010.02.04 18:24 sell 5 1.00 1075.20 0.00 0.00
13 2010.02.04 18:27 modify 5 1.00 1075.20 1075.10 0.00
14 2010.02.04 18:32 close 5 1.00 1065.10 1075.10 0.00 1010.00 12949.78
15 2010.02.15 10:30 buy 6 1.00 1100.00 0.00 0.00
16 2010.02.15 14:06 modify 6 1.00 1100.00 1100.10 0.00
17 2010.02.15 18:24 s/l 6 1.00 1100.10 1100.10 0.00 10.00 12959.78
18 2010.02.17 14:30 buy 7 1.00 1127.20 0.00 0.00
19 2010.02.22 02:00 modify 7 1.00 1127.20 1127.30 0.00
20 2010.02.22 05:48 s/l 7 1.00 1127.30 1127.30 0.00 9.46 12969.24
21 2010.02.22 08:18 buy 8 1.00 1129.20 0.00 0.00
22 2010.03.02 18:30 buy 9 1.00 1133.10 0.00 0.00
23 2010.03.02 18:32 modify 8 1.00 1129.20 1131.20 0.00
24 2010.03.02 18:32 modify 9 1.00 1133.10 1131.20 0.00
25 2010.03.02 19:21 close 8 1.00 1136.20 1131.20 0.00 699.14 13668.38
26 2010.03.02 19:21 close 9 1.00 1136.20 1131.20 0.00 310.00 13978.38
27 2010.03.22 16:04 sell 10 1.00 1099.30 0.00 0.00
28 2010.03.22 16:14 modify 10 1.00 1099.30 1099.20 0.00
29 2010.03.22 17:47 s/l 10 1.00 1099.20 1099.20 0.00 10.00 13988.38
30 2010.03.24 14:24 sell 11 1.00 1093.30 0.00 0.00
31 2010.03.24 21:55 modify 11 1.00 1093.30 1093.20 0.00
32 2010.03.25 10:01 s/l 11 1.00 1093.20 1093.20 0.00 10.14 13998.51
33 2010.03.31 17:46 buy 12 1.00 1116.90 0.00 0.00
34 2010.04.01 13:47 modify 12 1.00 1116.90 1117.00 0.00
35 2010.04.01 17:51 close 12 1.00 1127.00 1117.00 0.00 1009.68 15008.19
36 2010.04.05 12:19 buy 13 1.00 1130.20 0.00 0.00
37 2010.04.05 18:35 modify 13 1.00 1130.20 1130.30 0.00
38 2010.04.06 02:31 s/l 13 1.00 1130.30 1130.30 0.00 9.89 15018.08
39 2010.04.06 17:48 buy 14 1.00 1135.30 0.00 0.00
40 2010.04.06 18:33 modify 14 1.00 1135.30 1135.40 0.00
41 2010.04.06 22:30 s/l 14 1.00 1135.40 1135.40 0.00 10.00 15028.08
42 2010.05.07 20:00 buy 15 1.00 1210.50 0.00 0.00
43 2010.05.11 13:10 buy 16 1.00 1213.30 0.00 0.00
44 2010.05.11 13:13 modify 15 1.00 1210.50 1211.95 0.00
45 2010.05.11 13:13 modify 16 1.00 1213.30 1211.95 0.00
46 2010.05.11 13:49 close 15 1.00 1217.00 1211.95 0.00 649.77 15677.84
47 2010.05.11 13:49 close 16 1.00 1217.00 1211.95 0.00 370.00 16047.84
48 2010.05.14 14:33 buy 17 1.00 1250.40 0.00 0.00
49 2010.06.08 12:14 buy 18 1.00 1251.40 0.00 0.00
50 2010.06.18 13:49 buy 19 1.00 1253.50 0.00 0.00
51 2010.06.18 13:50 modify 17 1.00 1250.40 1251.80 0.00
52 2010.06.18 13:50 modify 18 1.00 1251.40 1251.80 0.00
53 2010.06.18 13:50 modify 19 1.00 1253.50 1251.80 0.00
54 2010.06.18 13:57 close 17 1.00 1255.20 1251.80 0.00 475.84 16523.69
55 2010.06.18 13:57 close 18 1.00 1255.20 1251.80 0.00 378.56 16902.25
56 2010.06.18 13:57 close 19 1.00 1255.20 1251.80 0.00 170.00 17072.25
57 2010.07.01 16:00 sell 20 1.00 1209.90 0.00 0.00
58 2010.07.01 21:16 modify 20 1.00 1209.90 1209.80 0.00
59 2010.07.01 22:32 close 20 1.00 1199.80 1209.80 0.00 1010.00 18082.25
60 2010.07.06 17:52 sell 21 1.00 1196.60 0.00 0.00
61 2010.07.06 18:30 modify 21 1.00 1196.60 1196.50 0.00
62 2010.07.06 20:10 s/l 21 1.00 1196.50 1196.50 0.00 10.00 18092.25
63 2010.07.19 14:35 sell 22 1.00 1185.10 0.00 0.00
64 2010.07.19 18:24 modify 22 1.00 1185.10 1185.00 0.00
65 2010.07.19 21:50 s/l 22 1.00 1185.00 1185.00 0.00 10.00 18102.25
66 2010.07.27 17:15 sell 23 1.00 1176.40 0.00 0.00
67 2010.07.27 17:50 modify 23 1.00 1176.40 1176.30 0.00
68 2010.07.27 18:29 close 23 1.00 1166.30 1176.30 0.00 1010.00 19112.25
69 2010.08.06 13:56 buy 24 1.00 1204.90 0.00 0.00
70 2010.08.06 14:36 modify 24 1.00 1204.90 1205.00 0.00
71 2010.08.06 15:29 s/l 24 1.00 1205.00 1205.00 0.00 10.00 19122.25
72 2010.08.12 13:57 buy 25 1.00 1212.80 0.00 0.00
73 2010.08.12 14:37 modify 25 1.00 1212.80 1212.90 0.00
74 2010.08.12 15:27 s/l 25 1.00 1212.90 1212.90 0.00 10.00 19132.25
75 2010.08.25 10:28 buy 26 1.00 1239.50 0.00 0.00
76 2010.08.25 22:41 modify 26 1.00 1239.50 1239.60 0.00
77 2010.08.26 00:06 s/l 26 1.00 1239.60 1239.60 0.00 9.64 19141.89
78 2010.08.31 14:37 buy 27 1.00 1246.50 0.00 0.00
79 2010.08.31 18:09 modify 27 1.00 1246.50 1246.60 0.00
80 2010.08.31 22:32 s/l 27 1.00 1246.60 1246.60 0.00 10.00 19151.89
81 2010.09.07 13:57 buy 28 1.00 1256.70 0.00 0.00
82 2010.09.07 14:37 modify 28 1.00 1256.70 1256.80 0.00
83 2010.09.07 15:31 s/l 28 1.00 1256.80 1256.80 0.00 10.00 19161.89
84 2010.09.14 17:12 buy 29 1.00 1264.40 0.00 0.00
85 2010.09.14 17:48 modify 29 1.00 1264.40 1264.50 0.00
86 2010.09.14 18:34 close 29 1.00 1274.50 1264.50 0.00 1010.00 20171.89
87 2010.09.16 13:16 buy 30 1.00 1276.80 0.00 0.00
88 2010.09.17 08:25 modify 30 1.00 1276.80 1276.90 0.00
89 2010.09.17 14:32 s/l 30 1.00 1276.90 1276.90 0.00 9.88 20181.76
90 2010.09.24 09:58 buy 31 1.00 1298.20 0.00 0.00
91 2010.09.28 17:51 modify 31 1.00 1298.20 1298.30 0.00
92 2010.09.28 18:33 close 31 1.00 1308.30 1298.30 0.00 1009.75 21191.51
93 2010.10.05 09:16 buy 32 1.00 1322.60 0.00 0.00
94 2010.10.05 09:58 modify 32 1.00 1322.60 1322.70 0.00
95 2010.10.05 17:07 close 32 1.00 1332.70 1322.70 0.00 1010.00 22201.51
96 2010.10.13 17:46 buy 33 1.00 1366.90 0.00 0.00
97 2010.10.13 17:56 modify 33 1.00 1366.90 1367.00 0.00
98 2010.10.14 03:36 close 33 1.00 1377.00 1367.00 0.00 1009.60 23211.11
99 2010.10.21 18:38 sell 34 1.00 1329.20 0.00 0.00
100 2010.10.21 19:36 modify 34 1.00 1329.20 1329.10 0.00
101 2010.10.22 01:15 s/l 34 1.00 1329.10 1329.10 0.00 10.06 23221.17
102 2010.10.22 01:27 sell 35 1.00 1325.90 0.00 0.00
103 2010.10.22 10:26 modify 35 1.00 1325.90 1325.80 0.00
104 2010.10.22 14:38 s/l 35 1.00 1325.80 1325.80 0.00 10.00 23231.17
105 2010.11.04 13:12 buy 36 1.00 1367.80 0.00 0.00
106 2010.11.04 15:05 modify 36 1.00 1367.80 1367.90 0.00
107 2010.11.04 15:28 close 36 1.00 1377.90 1367.90 0.00 1010.00 24241.17
108 2010.11.30 15:36 buy 37 1.00 1384.50 0.00 0.00
109 2010.11.30 18:28 modify 37 1.00 1384.50 1384.60 0.00
110 2010.11.30 21:28 s/l 37 1.00 1384.60 1384.60 0.00 10.00 24251.17
111 2010.12.16 16:18 sell 38 1.00 1372.30 0.00 0.00
112 2010.12.16 16:48 modify 38 1.00 1372.30 1372.20 0.00
113 2010.12.16 18:50 s/l 38 1.00 1372.20 1372.20 0.00 10.00 24261.17
114 2010.12.28 07:50 buy 39 1.00 1394.10 0.00 0.00
115 2010.12.28 13:13 modify 39 1.00 1394.10 1394.20 0.00
116 2010.12.28 15:18 close 39 1.00 1404.20 1394.20 0.00 1010.00 25271.17
117 2011.01.05 16:14 sell 40 1.00 1373.20 0.00 0.00
118 2011.01.05 16:19 modify 40 1.00 1373.20 1373.10 0.00
119 2011.01.05 16:27 s/l 40 1.00 1373.10 1373.10 0.00 10.00 25281.17
120 2011.01.07 10:31 sell 41 1.00 1364.90 0.00 0.00
121 2011.01.07 11:39 modify 41 1.00 1364.90 1364.80 0.00
122 2011.01.07 15:37 s/l 41 1.00 1364.80 1364.80 0.00 10.00 25291.17
123 2011.01.20 15:09 sell 42 1.00 1356.00 0.00 0.00
124 2011.01.20 15:34 modify 42 1.00 1356.00 1355.90 0.00
125 2011.01.20 17:15 close 42 1.00 1345.90 1355.90 0.00 1010.00 26301.17
126 2011.01.27 18:22 sell 43 1.00 1323.60 0.00 0.00
127 2011.01.27 18:31 modify 43 1.00 1323.60 1323.50 0.00
128 2011.01.27 18:44 s/l 43 1.00 1323.50 1323.50 0.00 10.00 26311.17
129 2011.02.08 15:32 buy 44 1.00 1360.20 0.00 0.00
130 2011.02.08 15:35 modify 44 1.00 1360.20 1360.30 0.00
131 2011.02.09 18:23 s/l 44 1.00 1360.30 1360.30 0.00 9.87 26321.03
132 2011.02.11 15:34 buy 45 1.00 1370.10 0.00 0.00

 
а AO, AC, Gator - используются в принятии решения? Просто они отрисовываются если нажать "открыть график" после теста. Но вы вроде бы пишите что не используются?
 
ZZZEROXXX:
а AO, AC, Gator - используются в принятии решения? Просто они отрисовываются если нажать "открыть график" после теста. Но вы вроде бы пишите что не используются?
Используются только iFractals(...) и iAlligator(...).
Причина обращения: