Gold Coin M5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «gold coin_fix_terki.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Gold Coin M5 — торговый советник для MetaTrader 4, работающий на таймфрейме M5 и использующий индикатор ADX на трёх периодах (M5, M15, H1) для определения направления тренда. Советник реализует стратегию сетки усреднения с ордерами типа BUYSTOP и SELLSTOP, управляет позицией через трейлинг-стоп и контролирует риски по убытку и просадке. Два режима работы переключаются параметром Terki: один — с динамическим усреднением и поиском точек входа по уровню спреда и ценовому движению, другой — с фильтрацией по стохастику и параболику SAR на M15.
Настройки программы
| Настройка | Описание |
|---|---|
| Terki | Терки — Переключатель режима работы советника; при true активируется режим усреднения с динамическим поиском входа |
| Search_trend_bar | Баров для поиска тренда — Количество баров для анализа тренда при определении направления |
| iADX_M5 | ADX на M5 — Период индикатора ADX для таймфрейма M5 |
| iADX_M15 | ADX на M15 — Период индикатора ADX для таймфрейма M15 |
| iADX_H1 | ADX на H1 — Период индикатора ADX для таймфрейма H1 |
| Step | Шаг — Базовый шаг размещения стоп-ордеров в пунктах |
| Acceleration | Ускорение — Параметр ускорения для расчёта динамики цены |
| TrailingStop | Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах |
| Mult_Profit | Множитель прибыли — Множитель для расчёта целевого уровня прибыли |
| Mult_Loss | Множитель убытка — Множитель для расчёта порога убытка |
| Distance | Дистанция — Дополнительное расстояние от текущей цены для размещения ордеров |
| Coin_Step_Trade | Шаг монеты — Пороговое значение для проверки отношения equity к balance при модификации стоп-лосса |
| StartLots | Начальный лот — Начальный размер лота для новых сделок |
| TIME | Время ожидания — Минимальный интервал в секундах между попытками открытия новых позиций |
| Average_spread | Средний спред — Максимально допустимый средний спред в пунктах для работы советника |
| Magic | Магический номер — Идентификатор ордеров советника для фильтрации |
| q | Q параметр стохастика — Параметр K стохастика, умножаемый на 10 при вызове iStochastic |
| sar | SAR — Начальное значение параметра Step для индикатора SAR |
| user_slippage | Проскальзывание — Допустимое проскальзывание в пунктах при исполнении ордеров |
| PPROFIT | Прибыль управление — Текстовая метка для обозначения режима управления прибылью |
| ProfitGoal | Цель прибыли — Переключатель режима контроля прибыли: по тикам или по барам |
| MinusProfitTarget | Целевой уровень прибыли — Целевое значение прибыли для закрытия всех позиций при достижении |
| DynProfit | Динамическая прибыль — Шаг динамического увеличения целевого уровня прибыли |
| WaitTime | Время ожидания после закрытия — Пауза в миллисекундах после закрытия всех позиций перед возобновлением работы |
| DrawDown | Контроль просадки — Включает или отключает автоматическое закрытие позиций при превышении максимальной просадки |
| MaxDrawdownPercent | Максимальная просадка — Максимально допустимая просадка в процентах от капитала |
Поиск по коду файла
#property description "Email: s*****d*@ukr.net"
#property strict
#include <stdlib.mqh>
#include <stderror.mqh>
extern bool Terki = true ;// Similar BackTest
extern int Search_trend_bar = 50;
extern int iADX_M5 = 14;
extern int iADX_M15 = 5;
extern int iADX_H1 = 3;
extern int Step = 20;
extern int Acceleration = 7;
extern int TrailingStop = 25;
extern int Mult_Profit = 100;
extern int Mult_Loss = 3;
extern int Distance = 1;
extern int Coin_Step_Trade = 500;
extern double StartLots = 0.02;
extern int TIME = 300;
extern int Average_spread = 20;
extern int Magic = 7773888;
extern int q=7,w=8, e=6, loss=15000;
extern double sar=0.05,sar2=0.02;
extern int user_slippage=10;
extern string PPROFIT =" PROFIT GESTION ";
input bool ProfitGoal = true; // Ticks or Bars
input double MinusProfitTarget =1.0; // If Profit = ProfitTarget Close All Positions
input double DynProfit = 1.0; // Profit Dynamique
input int WaitTime = 30000; // Temps d'attente apr?s cl?ture (en millisecondes)
input bool DrawDown = true ; // Active DrawDown
extern double MaxDrawdownPercent = 5.0; // Drawdown maximum en pourcentage du capital
double initialProfit = MinusProfitTarget; // Profit initial
double LastProfit = MinusProfitTarget; // Dernier profit enregistr?
double newProfit;
double NewMinusProfitTarget;
bool ProfitMinus = false; // Indicateur de d?passement du profit initial
double totalProfit;
double SleepTime = WaitTime;
double maxEquity;
int magic = Magic;
int MAGIC_NUMBER = Magic;
datetime lastCandleTime; // Stocke le temps de la derni?re bougie
bool achatEnCours = false; // Indique si un ordre d'achat est en cours
bool venteEnCours = false; // Indique si un ordre de vente est en cours
int nbOrdresAchat = 0; // Compteur d'ordres d'achat
int nbOrdresVente = 0; // Compteur d'ordres de vente
string Comments = "Gold Coin M5";
bool isTestMode;
int Awers = 5;
int Colerd = 10;
int Bitters = 100;
int Sigiig = user_slippage;
int r, Dffer, fsfwef;
double PeriMix, Lultors, Lultorsw, Qwaaw, Swwe, Bultes,
Serrte, Seerwr, Swwewx, Looeer, Bibiruxe, Cupperip;
double ddwert[];
double pupserix[];
double avgtick[];
int wqaww[];
int sweew, wdwqwq;
double max = 0;
int se=0;
void init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
void Rexter()
{
if (ProfitGoal == true && MinusProfitTarget > 0)
{
CheckProfitTarget();
}
if (DrawDown)
{
double currentDrawdownPercent = CalculateCurrentDrawdownPercent();
if (currentDrawdownPercent > MaxDrawdownPercent)
{
CloseOrders();
Print("Drawdown maximum d?pass?. Fermeture de tous les ordres.");
ResetAfterClose(); // R?initialiser les variables apr?s la fermeture des ordres
return;
}
}
int totalBuyStop = 0;
int totalSellStop = 0;
int ticket;
Calculation_of_dynamic_information();
int totalTrades = 0;
for( int pos = 0; pos < OrdersTotal(); pos++ ) {
r = OrderSelect( pos, SELECT_BY_POS, MODE_TRADES );
if( OrderSymbol() != Symbol() ) continue;
if( OrderMagicNumber() == Magic && Terki){
totalTrades++;
switch ( OrderType() ) {
case OP_BUY:
if( AccountEquity() > max || AccountEquity() / AccountBalance() < ( double ) Coin_Step_Trade / 100 ){
if( Swwewx < -60 * Point && Bid < OrderOpenPrice() - ( 60 * Point ) )
if( OrderStopLoss() == 0.0 || Bid - OrderStopLoss() > ( TrailingStop * Point * 150 )+ fsfwef*Point )
if( NormalizeDouble( Bid - ( TrailingStop * Point * 150 ), Digits ) != OrderStopLoss() )
r = OrderModify( OrderTicket(), OrderOpenPrice(), NormalizeDouble( Bid - ( TrailingStop * Point), Digits ), OrderTakeProfit(), 0 );
}
break;
case OP_SELL:
if( AccountEquity() > max || AccountEquity() / AccountBalance() < ( double ) Coin_Step_Trade / 100 ){
if( Swwewx > 60 * Point && Ask > OrderOpenPrice() + ( 60 * Point ) )
if( OrderStopLoss() == 0.0 || OrderStopLoss() - Ask > ( TrailingStop * Point * 150 ) + fsfwef*Point )
if( NormalizeDouble( Ask + ( TrailingStop * Point * 150 ), Digits ) != OrderStopLoss() )
r = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble( Ask + ( TrailingStop * Point), Digits ), OrderTakeProfit(), 0 );
}
break;
}
}
}
if(Ask-Bid>25*Point && totalTrades==0){Alert("Big spread now > 25. Points:" + (Ask-Bid)/Point);return;}
if(iHigh(NULL,PERIOD_M1,0)==iLow(NULL,PERIOD_M1,0) && Terki)
{
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
int sz = OrderSelect( pos, SELECT_BY_POS);
if(OrderType()==OP_SELLSTOP && OrderMagicNumber()==Magic && Bid-5*Point>OrderOpenPrice())int dc=OrderDelete(OrderTicket());
if(OrderType()==OP_BUYSTOP && OrderMagicNumber()==Magic && Ask+5*Point<OrderOpenPrice())int dc=OrderDelete(OrderTicket());
}
}
double Profit=Qwaaw()*400;
double profit=0;
double min=DBL_MAX;
double maxi=-DBL_MAX;
int tips=0;
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
int sz = OrderSelect(pos, SELECT_BY_POS);
if(OrderMagicNumber()==Magic && Terki){profit=profit+OrderProfit();}
if(OrderMagicNumber()==Magic && OrderOpenPrice()<min && Terki)min=OrderOpenPrice();
if(OrderMagicNumber()==Magic && OrderOpenPrice()>maxi && Terki)maxi=OrderOpenPrice();
if(OrderMagicNumber()==Magic && OrderType()==OP_BUY && Terki)tips=1;
if(OrderMagicNumber()==Magic && OrderType()==OP_SELL && Terki)tips=-1;
}
if(profit>Profit || profit<-(Profit*2))
{
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
int sz = OrderSelect( pos, SELECT_BY_POS);
if(OrderType()==OP_SELL && OrderMagicNumber()==Magic && Terki)int dc=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderType()==OP_BUY && OrderMagicNumber()==Magic && Terki)int dc=OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
if(((OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) && Terki) && OrderMagicNumber()==Magic)int dc=OrderDelete(OrderTicket());
}
}
double lr=Qwaaw();
if(totalTrades>1 && Terki)lr=Qwaaw()*totalTrades;
if(totalTrades < Awers && Terki)
{
if( Swwewx > 60 * Point && Ask+(Step+Distance)*Point<min)
{
ticket = OrderSend( Symbol(), OP_BUYSTOP, lr, Ask + Step*Point , Sigiig, 0, 0, Comments, Magic, 0 );
sweew = ( int ) TimeCurrent();
return;
}
if( Swwewx < -60 * Point && Bid-(Step+Distance)*Point>maxi)
{
ticket = OrderSend(Symbol(), OP_SELLSTOP, lr, Bid - Step*Point, Sigiig, 0, 0, Comments, Magic, 0 );
wdwqwq = ( int ) TimeCurrent();
return;
}
}
totalTrades = 0;
if(Terki)return;
for(int pos=OrdersTotal()-1;pos>=0;pos--) {
r = OrderSelect( pos, SELECT_BY_POS, MODE_TRADES );
if( OrderSymbol() != Symbol() ) continue;
if( OrderMagicNumber() == Magic && !Terki){
totalTrades++;
}
}
if(iHigh(NULL,PERIOD_M1,0)==iLow(NULL,PERIOD_M1,0) && !Terki)
{
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
int sz = OrderSelect( pos, SELECT_BY_POS);
if(OrderType()==OP_SELLSTOP && OrderMagicNumber()==Magic && Bid-5*Point>OrderOpenPrice())int dc=OrderDelete(OrderTicket());
if(OrderType()==OP_BUYSTOP && OrderMagicNumber()==Magic && Ask+5*Point<OrderOpenPrice())int dc=OrderDelete(OrderTicket());
}
}
Profit=Qwaaw()*Mult_Profit;
profit=0;
min=DBL_MAX;
maxi=-DBL_MAX;
tips=0;
double totalLots=0.0;
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
int sz = OrderSelect(pos, SELECT_BY_POS);
if(OrderMagicNumber()==Magic && !Terki){profit=profit+OrderProfit();}
if(OrderMagicNumber()==Magic && OrderOpenPrice()<min && !Terki)min=OrderOpenPrice();
if(OrderMagicNumber()==Magic && OrderOpenPrice()>maxi && !Terki)maxi=OrderOpenPrice();
if(OrderMagicNumber()==Magic && OrderType()==OP_BUY && !Terki)tips=1;
if(OrderMagicNumber()==Magic && OrderType()==OP_SELL && !Terki)tips=-1;
if(OrderMagicNumber()==Magic && (OrderType()==OP_BUY || OrderType()==OP_SELL) && !Terki)totalLots=totalLots+OrderLots();
}
datetime old="9999.01.01 00:00:00";
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
int sz = OrderSelect( pos, SELECT_BY_POS);
if(OrderMagicNumber()==Magic && OrderOpenTime()<old && !Terki)old=OrderOpenTime();
}
if(profit<-(Qwaaw()*loss))
{
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
int sz = OrderSelect( pos, SELECT_BY_POS);
if(OrderType()==OP_SELL && OrderMagicNumber()==Magic && OrderOpenTime()==old && !Terki)int dc=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderType()==OP_BUY && OrderMagicNumber()==Magic && OrderOpenTime()==old && !Terki)int dc=OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
}
return;
}
if(profit>Profit && !Terki)
{
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
int sz = OrderSelect( pos, SELECT_BY_POS);
if(OrderType()==OP_SELL && OrderMagicNumber()==Magic)int dc=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderType()==OP_BUY && OrderMagicNumber()==Magic)int dc=OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
if((OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) && OrderMagicNumber()==Magic)int dc=OrderDelete(OrderTicket());
}
}
ObjectDelete("tyrelerfk_text");
ObjectCreate(0,"tyrelerfk_text",OBJ_TEXT,0,Time[0],Open[0]);
if (TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) != 0)ObjectSetString(0,"tyrelerfk_text",OBJPROP_TEXT,"The robot works! Analyzing the market!");
if (TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == 0)ObjectSetString(0,"tyrelerfk_text",OBJPROP_TEXT,"The robot doesn't work! Trading is prohibited!");
ObjectSetString(0,"tyrelerfk_text",OBJPROP_FONT,"Arial");
ObjectSetInteger(0,"tyrelerfk_text",OBJPROP_FONTSIZE,7);
ObjectSetDouble(0,"tyrelerfk_text",OBJPROP_ANGLE,0.0);
ObjectSetInteger(0,"tyrelerfk_text",OBJPROP_ANCHOR,ANCHOR_LEFT_LOWER);
ObjectSetInteger(0,"tyrelerfk_text",OBJPROP_COLOR,clrYellow);
ObjectSetInteger(0,"tyrelerfk_text",OBJPROP_BACK,false);
ObjectSetInteger(0,"tyrelerfk_text",OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,"tyrelerfk_text",OBJPROP_SELECTED,false);
ObjectSetInteger(0,"tyrelerfk_text",OBJPROP_HIDDEN,true);
ObjectSetInteger(0,"tyrelerfk_text",OBJPROP_ZORDER,0);
int colest=0;
for(int posq=0;posq<OrdersHistoryTotal();posq++)
{
int sz = OrderSelect(posq, SELECT_Показано первые 50% кода (символов: 17427)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.