Ако децата имаха право да гласуват, почти сигурно е, че щяха да ни управляват кученцата от Пес патрул.
И даже нямаше да е лошо.
Ако децата имаха право да гласуват, почти сигурно е, че щяха да ни управляват кученцата от Пес патрул.
И даже нямаше да е лошо.
Предоставените по-долу функции определят дали има отворен нов бар на съответния таймфрейм на който са активирани, т.е. ако функциите работят на таймфрейм М5, то ще връщат положителен отговор за всеки отворен нов петминутен бар.
Функция 1
bool NewBar()
{
static datetime lastbar;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}
Функция 2
static int BARS;
bool IsNewBar()
{
if(BARS!=Bars(_Symbol,_Period))
{
BARS=Bars(_Symbol,_Period);
return(true);
}
return(false);
}
Функция 3
bool IsNewBar() {
if (stopper == Time[1])
{
stopper = Time[0];
return true;
}
else
{
return false;
}
}
Горните функции вършат една и съща работа и е въпрос на предпочитание коя да ползвате
Този шаблон може да се използва за тестване на сравнително прости логически зависимости и не е подходящ за лайф търговия, защото няма вгрдени защити от сривове на пазара и няма вграден ММ. Рискаът от използването му е изцяло на потребителя и автора не носи никаква отговорност за евентуални претърпени загуби на финансови средства.
//ПРИМЕРНА СХЕМА ЗА СЪДАВАНЕ НА ТЕСТОВ БОТ ЗА МЕТАТРЕЙДЪР 4
//ТОЗИ ПРИМЕРЕН КОД МОЖЕ ДА СЕ ПОЛЗВА САМО В ТЕСТОВ РЕЖИМ
//И НЕ Е ПОДХОДЯЩ ЗА ЛАЙФ ТЪРГОВИЯ ПО РЕАЛНА СМЕТКА
//ЗАЩОТО НЯМА ВКЛЮЧЕНИ НИКАКВИ ЗАЩИТИ СРЕЩУ СРИВОЕ НА ПАЗАРА
//ИЗПОЛЗВАНЕТО НА ТОЗИ МАКЕТ Е ИЗЦЯЛО НА ОТГОВОРНОСТ НА ПОТРЕБИТЕЛЯ
//И АВТОРА МУ НЕ НОСИ НИКАКВА ОТГОВОРНОСТ ЗА ПРЕТЪРПЕНИ ЗАГУБИ НА СРЕДСТВА
extern int MagicNumber=10001;
extern double Lots = 0.01;
extern double StopLoss= ;//тук вписвате Стоплос в пипове
extern double TakeProfit= ;//тук вписвате тейкпрофит в пипсове
extern int Slippage=3;
//+------------------------------------------------------------------+
// инициализация на експерта
//+------------------------------------------------------------------+
int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if( BuyOrdersCount() == 0 )
{
int result=0;
bool LongEntryCondition = ; //Тук вписвате условието за отваряне на дълга позиция
if(LongEntryCondition == true)
{
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Тук вписвате желания коментар към позицията",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
}
}
if( SellOrdersCount() == 0 )
{
bool ShortEntryCondition = ; //Тук вписвате условието за отваряне на къса позиция
if(ShortEntryCondition == true)
{
result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Тук вписвате желания коментар към позицията",MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
}
}
return(0);
}
int SellOrdersCount()
{
int result=0;
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()== OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
result++;
}
return(result);
}
int BuyOrdersCount()
{
int result=0;
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()== OP_BUY &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
result++;
}
return(result);
}
Функцията затваря всички активни позиции по зададен MagicNumber
int CloseAll()
{
int total = OrdersTotal();
for(int i = total - 1; i >= 0; i--)
{
OrderSelect(i, SELECT_BY_POS);
int type = OrderType();
bool result = false;
if(OrderMagicNumber()==MagicNumber)
{
switch(type)
{
//Close opened long positions
case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
break;
//Close opened short positions
case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
}
if(result == false)
{
Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
Sleep(3000);
}
}
}
return(0);
}
Изчислява броя на отворените къси позиции за даден символ и MagicNumber
int SellOrdersCount()
{
int result=0;
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()== OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
result++;
}
return(result);
}
Изчислява броя на отворените дълги позиции за даден символ и MagicNumber
int BuyOrdersCount()
{
int result=0;
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()== OP_BUY &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
result++;
}
return(result);
}
Изчислява броя на всички отворени позиции за даден MagicNumber
int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;
}
return (result);
}
Аксиома 1: Текущата цена отчита всички фактори от миналото
Това ще рече, че всеки фактор, който влияе на цената – икономически, политически, психологически – след като е на лице, значи вече е вкл’чен в цената. Техническият анализ се занимава с анализ на графиката без да се интересува от конкретните фактори за промяна на цената.
Аксиома 2: Движението на цената се подчинява на тренда
Следствие: Трендът продължава много пъти и обръща само веднъж
Тези твърдения са основа на техническия анализ. Основната задача на техническия анализ е идентификация на текущия тренд в колкото е възможно по-ранна фаза и съответно водене на търговия в посока на текущия тренд.
Аксиома 3: Историята се повтаря
Този принцип е основата на целия технически анализ. Ако в миналото сме имали сходни ситуации и има преобладаващ можел на развитие след ситуацията, то е много вероятно преобладаващия модел да се повтори и при следваща подобна ситуация.
Следствие от Аксиома 3:
Пазарът има вероятностен характер и няма сигурни модели. Има по-надеждни и по-ненадеждни модели

Низходящият триъгълник има съществено значение само ако се образува в края на низходящ тренд.
Има характера на трендпродължаваща фигура.
При пробив на линията на подкрепа от цената следва да се търгуват къси позиции, при пробив на низходящата тренд линия следва да се очаква корекция. Ако корекцията пробие 61.8 фибо ниво фигурата вече се приема за развалена и пазара е в неясно положение.

Възходящият триъгълник има смисъл само ако се наблюдава при възходящ тренд.
Пробой на линията на съпротивата означава, че тренда продължава и е време за дълга позиция.
При пробой на възходящата тренд линия в триъгълника е сигнал, че започва корекция, при корекция по-голяма от 61.8 фибо ниво вече разваля фигурата и не трябва да се има предвид при отваряне на позиция.

Симетричният триъгълбик е трендпродължаваща фигура и трябва да се търгува смело само пробива в посока на предишния тренд.
Пробив в посока, обратна на предхождащия фигурата тренд говори, че започва корекция и за вход може да се мисли само ако има сигнал за приключване на корекцията.
Ако корекцията премине 61.8 фибо нивото, то фигурата се счита за провалена и не трнява да се търгува по никакъв начин.