Price Data Components
Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
Profitability Reports
AUD/USD
Oct 2024 - Jan 2025
0.00 %
Total Trades
0
Won Trades
0
Lost trades
0
Win Rate
0.0 %
Expected payoff
0.00
Gross Profit
0.00
Gross Loss
0.00
Total Net Profit
0.00
-100%
-50%
0%
50%
100%
TENGRI_Trofi 1.4.13
//äëÿ ðàáîòû ñîâåòíèêà íåîáõîäèìû ñëåäóþùèå èíäèêàòîðû:
//NonLagAMA
//MLS-HL4-Angle
//Silence2_02
#property copyright "Copyright © Evgeniy Trofimov, 2009"
#property link "http://www.mql4.com/ru/users/EvgeTrofi"
//òàéìôðåéìû èñ÷èñëÿþòñÿ â ïîðÿäêå î÷åðåäíîñòè, åñëè TF =1; òî ýòî 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1 èòä
//ñïàñèáî ïðîãðàììèñòó runik, çà êóñîê êîäà ïî ÒÔ
extern string k = "------- íàñòðîéêè CCI -------";
extern int TF_CCI = 5; //òàéìôðåéì êîëåí èíäèêàòîðà CCI, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä
extern int Per_CCI = 33; //ïåðèîä CCI
extern int Level_CCI = 100; //óðîâåíü CCI
extern int Level_MLS = 100; //óðîâåíü CCI
extern string b = "------- íàñòðîéêè AMA -------";
extern int TF_AMA = 6; //òàéìôðåéì êîëåí èíäèêàòîðà AMA, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä
extern int pipBolling = 700; //ìèíèìàëüíîå ïðèáëèæåíèå öåíû ê ÀÌÀ
extern string Block = "-------Ïàðàìåòðû -------";
extern double PipStepExponent = 1; //åñëè íóæåí ïðîãðåññèâíûé øàã
extern double LotExponent1 = 1.70; //ïðîãðåññèâíûé ëîò äî StepX
extern double LotExponent2 = 2.08; //ïðîãðåññèâíûé ëîò ïîñëå StepX
extern int StepX = 3; //Step=5, äî 5øàãà óâåëè÷èâàåò ïî ýêñïîíåíòî1, ïîñëå 5 ïî ýêñïîíåíòî2
extern double LotSize = 0.05; //ðàçìåð ëîòà 1-ãî îðäåðà åñëè FixLot = true;
extern bool FixLot = false; //true - ôèêñèðîâàííûé ëîò, åñëè false - òî òîãäà ñìîòðèì LotStep
extern int LotStep = 500000; //øàã óâåëè÷åíèÿ ëîòà. ò.å. ñêîëüêî â äåïîçèòå LotStep âîñòîëüêî óâåëè÷èòñÿ LotSize. åñëè äåïî 2000 òî ëîò 0.01, åñëè ñòàíåò 4000 òî ëîò 0.02
extern int PipStep = 200; //øàã ìåæäó äîëèâêàìè. êàæäûé øàã óâèëè÷èâàåòñÿ â PipStepExponent ðàç åñëè Silence íèæå Level.
extern int TP = 200; //òýéêïðîôèò
extern int MaxTrades=5; //ìàêñèìàëüíîå êîë-âî êîëåí
extern string a = "Limit = AccountEquity() / ProfitThisSymbol";
extern bool Ostanov=true; //Âêëþ÷åíèå çàêðûòèÿ Ëîêà âñåõ îðäåðîâ ïî äîñòèæåíèè çàäàííîãî ëèìèòà
extern double Limit = 1000.0; //Ëèìèò íà çàêðûòèå îðäåðîâ(â åäèíèöàõ âàëþòû) Åñëè Balance>=AccountEquity()/Limit òî çàêðûâàåìñÿ
extern bool LossStop=true; //Âêëþ÷åíèå çàêðûòèÿ Ëîêà âñåõ îðäåðîâ ïî äîñòèæåíèè çàäàííîãî ëèìèòà
extern double LossLimit = 0.5; //Ëèìèò íà çàêðûòèå îðäåðîâ(Äîëÿ Equity îò äåïîçèòà)
extern bool Final=false; //Åñëè true, òî ïåðâûé îðäåð îòêðûâàòüñÿ íå áóäåò
extern int OpenNewTF = 5; //òàéìôðåì äëÿ îòêðûòèÿ íîâûõ îðäåðîâ, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä
extern int OpenNextTF = 5; //òàéìôðåéì äëÿ îòêðûòèÿ êîëåí îðäåðîâ, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä
extern int Povtor = 1; //òàéìôðåéì äëÿ ïîâòîðà çàïðîñîâ
extern string d = "ðàáîòà ñîâåòíèêà â ïÿòíèöó äî";
extern bool CloseFriday=true; // èñïîëüçîâàòü îãðàíè÷åíèå ïî âðåìåíè â ïÿòíèöó true, íå èñïîëüçîâàòü false
extern int CloseFridayHour=19; // âðåìÿ â ïÿòíèöó ïîñëå êîòîðîãî íå âûñòàâëÿåòñÿ ïåðâûé îðäåð
extern string OfficialVariable = "-------Ñëóæåáíûå ïåðåìåíûå-------";
extern string InformationOnChartString = "InformationOnChart - îòêëþ÷èòü äëÿ òåñòåðà (çàìåäëÿåò)";
extern bool InformationOnChart = true; //âûâîäèòü ëè èíôîðìàöèþ íà ãðàôèê, îòêëþ÷èòü äëÿ òåñòåðà (çàìåäëÿåò)
extern int MagicNumber = 20090919; //ïî ýòîìó íîìåðó ïðîèñõîäèò èäåíòèôèêàöèÿ îðäåðîâ íà ïðåíàäëåæíîñòü ñîâåòíèêó
int LotDecimal = 0;
int Slippage=30, OldTicket = 0;
datetime timeprevMIN=0;
datetime timeprevMAX=0;
int total, ticket, CountTrades;
int mper[10]={0,1,5,15,30,60,240,1440,10080,43200};
double Buy_NextLot,Sell_NextLot, Buy_NewLot, Sell_NewLot, Buy_LastLot, Sell_LastLot, Prof;
string CommentTrades;
//===========================
int init(){
LotDecimal = LotDecimal();
Ñorrect(OP_BUY);
Ñorrect(OP_SELL);
HideTestIndicators(true);
return(0);}
//===========================
int deinit(){
return(0);}
//============= Ñòàðò =======
int start(){
int LE;
double CountLot, CurrentLoss;
//======================================================================================
if (LotDecimal==0) LotDecimal = LotDecimal();
Information();
//========= Çàêðûòèå ëîêîâ ïðè ïðîôèòå =================================================
if ((Ostanov)&&CountTrades("buy")>0&&CountTrades("sell")>0&&(Balance("buy","Balance")+Balance("sell", "Balance"))>=AccountEquity()/Limit){
CloseAllPozitions(Symbol(),MagicNumber);
}
ticket=AntiOrderExist();
if(ticket!=0){
AntiOrderModify(ticket);
return(0);
}
//========= Çàêðûòèå ëîêîâ ïðè óáûòêå =================================================
if(LossStop){
if(AccountBalance()*LossLimit>AccountEquity()) {
CloseAllPozitions(Symbol(),MagicNumber);
}
}
//======================================================================================
if(Final) {
if(CountTrades("buy")+CountTrades("sell")==0) return(0);
}
if(timeprevMIN!=iTime(NULL,mper[OpenNewTF],0)) {
ticket=0;
CountTrades = CountTrades("buy");
if(CloseFriday==true&&DayOfWeek()==5&&TimeCurrent()>=StrToTime(CloseFridayHour+":00"))return(0); // çàïðåò â ïÿòíèöó
if (CountTrades==0&&NewOrder("buy")) {
if(CountTrades("sell")==MaxTrades) { //Ñîçäà¸ì çàìîê äëÿ sell
CommentTrades = "TENGRI "+Symbol()+" - AntiSell";
Buy_NewLot = Balance("sell" ,"Lot");
Prof = NormalizeDouble(iCustom(NULL,PERIOD_D1,"NonLagAMA", 0,60,0,0,1,2,0.0, 0,1), Digits);
if(Bid-Prof>MarketInfo(Symbol(), MODE_STOPLEVEL)*Point) {
LE=135;
while(LE>134 && LE<139) {
Print("Ïîêóïàåì. Çàìêîâûé. Ïàðàìåòðû. ñèìâîë="+Symbol()+", ëîò="+DoubleToStr(Buy_NewLot,2)+", öåíà="+DoubleToStr(Ask,Digits)+" ãðàíèöà óáûòêà="+DoubleToStr(Prof,Digits)+", êîììåíò="+CommentTrades+" ìàäæèê="+MagicNumber);
ticket = OrderSend(Symbol(),OP_BUY,Buy_NewLot,Ask,Slippage,Prof,0,CommentTrades,MagicNumber+1,0,Blue);
LE = GetLastError();
if(ticket<1) {Print("Îøèáêà: ",LE," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);}
RefreshRates();
}
}
} else { //Îáû÷íàÿ ïåðàâÿ ïîêóïêà
CommentTrades = "TENGRI "+Symbol()+" - Buy "+(CountTrades+1);
Buy_NewLot = NewLot("buy");
LE=135;
while(LE>134 && LE<139) {
Prof = Prof("buy");
Print("Ïîêóïàåì. Íîâûé. Ïàðàìåòðû. ñèìâîë="+Symbol()+", ëîò="+DoubleToStr(Buy_NewLot,2)+", öåíà="+DoubleToStr(Ask,Digits)+" ïðîôèò="+DoubleToStr(Prof,Digits)+", êîììåíò="+CommentTrades+" ìàäæèê="+MagicNumber);
ticket = OrderSend(Symbol(),OP_BUY,Buy_NewLot,Ask,Slippage,0,Prof,CommentTrades,MagicNumber,0,Blue);
LE = GetLastError();
if(ticket<1) {Print("Îøèáêà: ",LE," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);}
RefreshRates();
}
}
}
CountTrades = CountTrades("sell");
if (CountTrades==0&&NewOrder("sell")) {
if(CountTrades("buy")==MaxTrades) { //Ñîçäà¸ì çàìîê äëÿ buy
CommentTrades = "TENGRI "+Symbol()+" - AntiBuy";
Sell_NewLot = Balance("buy" ,"Lot");
Prof = NormalizeDouble(iCustom(NULL,PERIOD_D1,"NonLagAMA", 0,60,0,0,1,2,0.0, 0,1), Digits);
if(Prof-Ask>MarketInfo(Symbol(), MODE_STOPLEVEL)*Point) {
LE=135;
while(LE>134 && LE<139) {
Print("Ïðîäàåì. Çàìêîâûé. Ïàðàìåòðû. ñèìâîë="+Symbol()+", ëîò="+DoubleToStr(Sell_NewLot,2)+", öåíà="+DoubleToStr(Bid,Digits)+" ãðàíèöà óáûòêà="+DoubleToStr(Prof,Digits)+", êîììåíò="+CommentTrades+" ìàäæèê="+MagicNumber);
ticket = OrderSend(Symbol(),OP_SELL,Sell_NewLot,Bid,Slippage,Prof,0,CommentTrades,MagicNumber+1,0,Red);
LE = GetLastError();
if(ticket<1) {Print("Îøèáêà: ",LE," Íîâàÿ ïîïûòêà ïðîäàæè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);}
RefreshRates();
}
}
} else { //Îáû÷íàÿ ïåðàâÿ ïðîäàæà
CommentTrades = "TENGRI "+Symbol()+" - Sell "+(CountTrades+1);
Sell_NewLot = NewLot("sell");
LE=135;
while(LE>134 && LE<139) {
Prof = Prof("sell");
Print("Ïðîäàåì. Íîâûé. Ïàðàìåòðû. ñèìâîë="+Symbol()+", ëîò="+DoubleToStr(Sell_NewLot,2)+", öåíà="+DoubleToStr(Bid,Digits)+" ïðîôèò="+DoubleToStr(Prof,Digits)+", êîììåíò="+CommentTrades+" ìàäæèê="+MagicNumber);
ticket = OrderSend(Symbol(),OP_SELL,Sell_NewLot,Bid,Slippage,0,Prof,CommentTrades,MagicNumber,0,Red);
LE = GetLastError();
if(ticket<1) {Print("Îøèáêà: ",LE," Íîâàÿ ïîïûòêà ïðîäàæè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);}
RefreshRates();
}
}
}
timeprevMIN=iTime(NULL,mper[OpenNewTF],0);
}//Åñëè ðèñóåòñÿ ñëåäóþùàÿ ñâå÷à
if(timeprevMAX!=iTime(NULL,mper[OpenNextTF],0)) {
ticket=0;
CountTrades = CountTrades("buy");
if (CountTrades>0 && NextOrder("buy")){
CommentTrades = "TENGRI "+Symbol()+" - Buy "+(CountTrades+1);
Buy_NextLot = NextLot("buy");
LE=135;
while(LE>134 && LE<139) {
Print("Ïîêóïàåì. Ñëåäóþùèé. Ïàðàìåòðû. ñèìâîë:"+Symbol()+", ëîò="+DoubleToStr(Buy_NextLot,2)+", öåíà ="+DoubleToStr(Ask,Digits)+", êîììåíò="+CommentTrades+", ìàäæèê="+MagicNumber);
ticket = OrderSend(Symbol(),OP_BUY,Buy_NextLot,Ask,Slippage,0,0,CommentTrades,MagicNumber,0,Blue);
LE = GetLastError();
if(ticket<1) {Print("Îøèáêà: ",LE," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} else Ñorrect(OP_BUY);
RefreshRates();
}
if(LE==134) CloseAllPozitions(Symbol(),MagicNumber); //Åñëè äåíåã íåõâàòàåò - ñäà¸ìñÿ!
}
CountTrades = CountTrades("sell");
if (CountTrades>0 && NextOrder("sell")){
CommentTrades = "TENGRI "+Symbol()+" - Sell "+(CountTrades+1);
Sell_NextLot = NextLot("sell");
LE=135;
while(LE>134 && LE<139) {
Print("Ïðîäàåì. Ñëåäóþùèé. Ïàðàìåòðû. ñèìâîë:"+Symbol()+", ëîò="+DoubleToStr(Sell_NextLot,2)+", öåíà="+DoubleToStr(Bid,Digits)+", êîììåíò="+CommentTrades+", ìàäæèê="+MagicNumber);
ticket = OrderSend(Symbol(),OP_SELL,Sell_NextLot,Bid,Slippage,0,0,CommentTrades,MagicNumber,0,Red);
LE = GetLastError();
if(ticket<1) {Print("Îøèáêà: ",LE," Íîâàÿ ïîïûòêà ïðîäàæè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} else Ñorrect(OP_SELL);
RefreshRates();
}
if(LE==134) CloseAllPozitions(Symbol(),MagicNumber); //Åñëè äåíåã íåõâàòàåò - ñäà¸ìñÿ!
}
timeprevMAX=iTime(NULL,mper[OpenNextTF],0);
}
return(0);
}//start()
//+------------------------------------------------------------------+
double Prof(string OrdType)
{ double Zena=0;
if (TP<MarketInfo(Symbol(),MODE_STOPLEVEL)) TP=MarketInfo(Symbol(),MODE_STOPLEVEL);
if (OrdType=="buy")Zena=Ask+TP*Point;
if (OrdType=="sell")Zena=Bid-TP*Point;
return (Zena);
}
//+------------------------------------------------------------------+
void Ñorrect(int OrdType) {
int trade, LE;
double TP_all;
double AveragePrice;
AveragePrice = AveragePrice(OrdType);
for(trade=OrdersTotal()-1;trade>=0;trade--) {
OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
if(OrdType==OrderType() && OrdType==OP_BUY) {
TP_all = NormalizeDouble(AveragePrice+TP*Point,Digits);
if (OrderTakeProfit() != TP_all) {
Print("Ìîäèôèöèðóåì ïîêóïêó. Áåçóáûòîê = "+DoubleToStr(AveragePrice,Digits)+", ÒÐ = "+DoubleToStr(TP,0)+" Íîâûé óðîâåíü = "+DoubleToStr(TP_all,Digits));
LE=135;
while(LE>127 && LE<139) {
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(TP_all,Digits), 0);
LE = GetLastError();
if(LE>0) Print("Îøèáêà ¹ ", LE);
}
}
}
//----
if (OrdType==OrderType() && OrdType==OP_SELL) {
TP_all = NormalizeDouble(AveragePrice-TP*Point,Digits);
if (OrderTakeProfit() != TP_all) {
Print("Ìîäèôèöèðóåì ïðîäàæó. Áåçóáûòîê = "+DoubleToStr(AveragePrice,Digits)+", ÒÐ = "+DoubleToStr(TP,0)+" Íîâûé óðîâåíü = "+DoubleToStr(TP_all,Digits));
LE=135;
while(LE>127 && LE<139) {
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(TP_all,Digits), 0);
LE = GetLastError();
if(LE>0) Print("Îøèáêà ¹ ", LE);
}
}
}
//----
}
}
//+------------------------------------------------------------------+
//Âû÷èñëÿåì ðàçìåð ïåðâîãî ëîòà
double NewLot(string OrdType)
{
double tLots;
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
if (OrdType=="buy")
{
if (FixLot) tLots = LotSize; else tLots = NormalizeDouble(LotSize * AccountEquity()/LotStep, LotDecimal);
}
if (OrdType=="sell")
{
if (FixLot) tLots = LotSize; else tLots = NormalizeDouble(LotSize * AccountEquity()/LotStep, LotDecimal);
}
if(tLots < minlot) tLots = minlot;
return(tLots);
}
//+------------------------------------------------------------------+
//Âû÷èñëÿåì ðàçìåð ñëåäóþùåãî ëîòà
double NextLot(string OrdType){
double tLots;
int st_P=CountTrades(OrdType);
if (OrdType=="buy"){
if (st_P >= StepX) tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent2, LotDecimal);
else tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent1, LotDecimal);
}
if (OrdType=="sell"){
if (st_P >= StepX) tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent2, LotDecimal);
else tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent1, LotDecimal);
}
return(tLots);
}
//+------------------------------------------------------------------+
//Ïðîâåðÿåì íóæíî ëè îòêðûâàòü ïåðâûé îðäåð
bool NewOrder(string OrdType) {
double Up=iCustom(NULL,mper[TF_AMA],"NonLagAMA", 0,60,0,0,1,2,0.0, 1,1);
double Dn=iCustom(NULL,mper[TF_AMA],"NonLagAMA", 0,60,0,0,1,2,0.0, 2,1);
double CCI = iCCI(NULL, mper[TF_CCI], Per_CCI, PRICE_TYPICAL, 1);
double RSI = iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0);
double Silence=iCustom(NULL, PERIOD_H4,"Silence2_02", 12, 130, 2, 0);
bool NewOrd = false;
if(Silence<70) {
if(OrdType=="buy"&&CCI<Level_CCI) {
if(RSI<70) {
if(Up!=EMPTY_VALUE&&Bid-Up>pipBolling*Point) {
NewOrd = TRUE;
}
}
}
if (OrdType=="sell"&&CCI>-Level_CCI) {
if(RSI>30) {
if(Dn!=EMPTY_VALUE&&Dn-Ask>pipBolling*Point) {
NewOrd = TRUE;
}
}
}
}
return(NewOrd);
} //NewOrder()
//+------------------------------------------------------------------+
//Ïðîâåðÿåì íóæíî ëè îòêðûâàòü ñëåäóþùèé îðäåð
bool NextOrder(string OrdType) {
double Silence=iCustom(NULL, PERIOD_H4,"Silence2_02", 12, 130, 2, 0);
double MLSLast=iCustom(NULL, PERIOD_H1,"MLS-HL4-Angle", 12, false, 0, 2);
double MLS= iCustom(NULL, PERIOD_H1,"MLS-HL4-Angle", 12, false, 0, 1);
bool NextOrd = false;
int PipStepEX;
if(Silence<70) {
if (OrdType=="buy") {
if(MLSLast<-Level_MLS&&MLS>-Level_MLS) {
PipStepEX = NormalizeDouble(PipStep*MathPow(PipStepExponent,CountTrades(OrdType)),0);
if (FindLastOrder(OrdType, "Price") - Ask >= PipStepEX * Point && CountTrades(OrdType)<MaxTrades) {
NextOrd = TRUE;
}
}
}
if (OrdType=="sell") {
if(MLSLast>Level_MLS&&MLS<Level_MLS) {
PipStepEX = NormalizeDouble(PipStep*MathPow(PipStepExponent,CountTrades(OrdType)),0);
if (Bid - FindLastOrder(OrdType, "Price") >= PipStepEX * Point && CountTrades(OrdType)<MaxTrades) {
NextOrd = TRUE;
}
}
}
}
return(NextOrd);
} //NextOrder()
//+------------------------------------------------------------------+
//Âîçâðàùàåò öåíó èëè ëîò ïîñëåäíåãî îðäåðà
double FindLastOrder(string OrdType, string inf) {
double OrderPrice;
double LastLot;
int trade, oldticketnumber=0;
for(trade=OrdersTotal()-1;trade>=0;trade--)
{
OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
//----
if (OrdType=="buy")
{
if(OrderType()==OP_BUY)
{
if(OrderTicket()>oldticketnumber)
{
OrderPrice=OrderOpenPrice();
LastLot = OrderLots();
oldticketnumber=OrderTicket();
}
}
}
//----
if (OrdType=="sell")
{
if(OrderType()==OP_SELL)
{
if(OrderTicket()>oldticketnumber)
{
OrderPrice=OrderOpenPrice();
LastLot = OrderLots();
oldticketnumber=OrderTicket();
}
}
}
//----
}
}
if (inf=="Price") return(OrderPrice);
if (inf=="Lots") return(LastLot);
}
//+------------------------------------------------------------------+
//Âîçâðàùàåò êîëè÷åñòâî îðäåðîâ
int CountTrades(string OrdType)
{
int count=0;
int trade;
for(trade=OrdersTotal()-1;trade>=0;trade--)
{
OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
//----
if (OrdType == "buy")
{
if(OrderType()==OP_BUY) count++;
}
//----
if (OrdType == "sell")
{
if(OrderType()==OP_SELL) count++;
}
//----
}
}
return(count);
}
//+------------------------------------------------------------------+
//Âîçâðàùàåò ñðåäíþþ öåíó îòêðûòûõ ïîç ïî íàïðàâëåíèþ
double AveragePrice(int OrdType) {
double AveragePrice=0;
double Count=0;
int trade;
for(trade=OrdersTotal()-1;trade>=0;trade--) {
OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) {
if (OrdType == OrderType()) {
AveragePrice=AveragePrice+OrderOpenPrice()*OrderLots();
Count=Count + OrderLots();
}
}
}
if(Count>0) AveragePrice=NormalizeDouble(AveragePrice/Count, Digits);
return(AveragePrice);
}//AveragePrice()
//----------------------------------------------------------------------
//Ïðîöåäóðà âûâîäèò èíôîðìàöèþ ïî òîðãàì:
void Information() {
string MeTXT;
if (InformationOnChart) {
if(Final) MeTXT=" (Ðåæèì çàâåðøåíèÿ)";
Comment(""
//+ "\n"
+ " TENGRI MARTINGEIL EvgeTrofi "+Symbol()+MeTXT
+ "\n"
+ " ------------------------------------------------"
+ "\n"
+ " Broker: " + AccountCompany()+". AccountLeverage: 1:"+ DoubleToStr(AccountLeverage(), 0)
+ "\n"
+ " ------------------------------------------------"
+ "\n"
+ " Buy open -> "+CountTrades("buy")+" MaxTrades -> "+MaxTrades
+ "\n"
+ " Open balance: " + DoubleToStr(Balance("buy", "Balance"), 2)
+ "\n"
+ " Open lot: " + DoubleToStr(Balance("buy", "Lot"), 2)
+ "\n"
+ " ------------------------------------------------"
+ "\n"
+ " Sell open -> "+CountTrades("sell")+" MaxTrades -> "+MaxTrades
+ "\n"
+ " Open balance: " + DoubleToStr(Balance("sell", "Balance"), 2)
+ "\n"
+ " Open lot: " + DoubleToStr(Balance("sell", "Lot"), 2)
+ "\n"
+ " ------------------------------------------------"
+ "\n"
+ " Close Lock: " + DoubleToStr ((AccountEquity() / (Limit)), 2)
+ "\n"
+ " Balance Buy && Sell: " + DoubleToStr((Balance("buy", "Balance")+Balance("sell", "Balance")), 2)
);
}
}
//---------------------------------------------------
//ôóíêöèÿ ðàñ÷åòà èíôîðìàöèè ïî òåêóùèì òîðãàì
double Balance(string OrdType, string inf) {
double result=0;
int trade;
for(trade=OrdersTotal()-1;trade>=0;trade--) {
OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
if (OrdType == "buy") {
if(OrderType()==OP_BUY) {
if (inf=="Balance") result=result+OrderProfit()-OrderSwap()-OrderCommission();
if (inf=="Lot") result=result+OrderLots();
}
}
//----
if (OrdType == "sell") {
if(OrderType()==OP_SELL) {
if (inf=="Balance") result=result+OrderProfit()-OrderSwap()-OrderCommission();
if (inf=="Lot") result=result+OrderLots();
}
}
}
return(result);
}
//---------------------------------------------------
double LotDecimal()
{
double steplot=MarketInfo(Symbol(), MODE_LOTSTEP);
int LotsDigits = MathCeil(MathAbs(MathLog(steplot)/MathLog(10)));
return(LotsDigits);
}
//===================================================
//Çàêðûòèå âñåõ ïîçèöèé
//+------------------------------------------------------------------+
int CloseAllPozitions(string fSymbol="", int fMagic=0, int type=-1) {
int LE;
double PriceClose;
if(IsTradeAllowed()) {
int total = OrdersTotal();
for (int i = total-1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==fSymbol || fSymbol=="") {
if(OrderMagicNumber()==fMagic || fMagic==0) {
if(OrderType()==type||type==-1) {
LE=135;
while(LE>134 && LE<139) {
if(OrderType()==OP_BUY) {
PriceClose=MarketInfo(OrderSymbol(),MODE_BID);
} else if(OrderType()==OP_SELL) {
PriceClose=MarketInfo(OrderSymbol(),MODE_ASK);
}
OrderClose(OrderTicket(),OrderLots(),PriceClose,Slippage);
LE = GetLastError();
if(LE>0) Print("ÑòàÔÔêà íå çàêðûâàåòñÿ ïî ïðè÷èíå îøèáêè ¹ ",LE);
}
}
}
} // Åñëè ñâîé
} // Next i
} // Ñîâåòíèêó ìîæíî òîðãîâàòü
return(0);
}//CloseAllPozitions()
//+------------------------------------------------------------------+
int AntiOrderExist() {
for(int i=OrdersTotal()-1; i>=0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()) {
if(OrderMagicNumber()==MagicNumber+1) {
return(OrderTicket());
}
}
}
return(0);
} //AntiOrderExist()
//+------------------------------------------------------------------+
void AntiOrderModify(int ticket) {
static datetime LastDate;
bool LimitOk=false;
if(LastDate!=iTime(Symbol(),PERIOD_D1,0)) {
if(OrderSelect(ticket, SELECT_BY_TICKET)) {
double StopLoss=NormalizeDouble(iCustom(NULL,PERIOD_D1,"NonLagAMA", 0,60,0,0,1,2,0.0, 0,1), Digits);
if(OrderType()==OP_BUY) {
if(Bid-StopLoss>MarketInfo(Symbol(), MODE_STOPLEVEL)*Point) LimitOk=true;
} else {
if(StopLoss-Ask>MarketInfo(Symbol(), MODE_STOPLEVEL)*Point) LimitOk=true;
}
if(DoubleToStr(StopLoss,Digits)!=DoubleToStr(OrderStopLoss(),Digits) && LimitOk) {
Print("Ìîäèôèêàöèÿ çàìêà ïî ñèìâîëó ", Symbol(), ". Ïàðàìåòðû: Íîâûé StopLoss="+DoubleToStr(StopLoss,Digits)+", Ñòàðûé StopLoss="+DoubleToStr(OrderStopLoss(),Digits)+", Ask="+DoubleToStr(Ask,Digits)+", Bid="+DoubleToStr(Bid,Digits));
if(OrderModify(OrderTicket(), OrderOpenPrice(), StopLoss, OrderTakeProfit(), 0)) {
LastDate=iTime(Symbol(),PERIOD_D1,0);
} else {
Print("Îøèáêà ¹ ", GetLastError());
}
} else {
LastDate=iTime(Symbol(),PERIOD_D1,0);
}
}
}
} //AntiOrderModify()
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---