fedtm billioner.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «fedtm billioner.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, работающий на нескольких таймфреймах одновременно. Анализирует восемь периодов (M1, M5, M15, M30, H1, H4, D1, W1) с использованием пользовательских индикаторов EMA, MFI и RSI. Открывает сделки в направлении совпадающего сигнала всех таймфреймов. Поддерживает обратное направление торговли, трейлинг-стоп, трейлинг-тейк-прибыль и функцию выхода в безубыток.
Настройки программы
| Настройка | Описание |
|---|---|
| REVERSE_TRADING | Обратная торговля — Переключатель направления торговли: при включении советник открывает сделки в противоположном направлении по сравнению с сигналом индикаторов. |
| USE_TRAILING | Использовать трейлинг-стоп — Включает или отключает автоматическое перемещение стоп-лосса в сторону прибыли по мере движения цены. |
| EA_COMMENT | Комментарий советника — Текстовый комментарий, который присваивается каждой открываемой сделке для идентификации ордеров, размещённых данным советником. |
Поиск по коду файла
#property version "1.0"
#property strict
#include <stdlib.mqh>
bool BackTestAllowed = TRUE; //IF TRUE BACKTEST ALLOWED AND IF FALSE BACKTEST NO ALLOWED
bool UseAccountNumber = TRUE;
int ValidAccountNumber = *******; // TYPE HERE THE VALID ACCOUNT NUMBER WHICH U WANT RUN THIS PROGRAMME(IT WILL RUN ONLY ON THAT ACCOUNT)
int ExpiryDate = D'25.07.2020 00:00'; // GIVE HERE PROGRAMME EXPIRY DATE (FORMAT DD.MM.YYYY HH:MM)
extern bool REVERSE_TRADING = FALSE;
extern double LOT_SIZE = 0.1,
TAKE_PROFIT = 50,
STOP_LOSS = 50;
bool USE_FIRSTORDER = FALSE,
CLOSE_ON_REVERS = TRUE;
extern bool USE_TRAILING = TRUE;
extern int TRAILING_PIPS = 35,
TRAILING_STEP = 5,
TP_TRAILING_PIPS = 35;
extern string EA_COMMENT = "FEDTM Billioner";
bool TradeAllowed, TradeTime, FirstOrder, FirstEntry, SL_UPDATED,
USE_M1=TRUE, USE_M5=TRUE, USE_M15=TRUE, USE_M30=TRUE, USE_H1=TRUE, USE_H4=TRUE, USE_D1=TRUE, USE_W1=TRUE;
double Poin, DAILY_ACHIEVED_PROFIT, MyOrderProfit,
BUY_PRICE, SEL_PRICE;
int trade, ticket, MagicNumber = 123, OrderSlipage = 3, intResult, OrderBar,
BUY_OPENS,SEL_OPENS, BUYSTOP_OPENS, SELSTOP_OPENS, PREV_PERIOD;
string strComment, strPrevOrder, ChartComment;
string LblName = "forex.eamster_", M1_Trend, M5_Trend, M15_Trend, M30_Trend, H1_Trend, H4_Trend, D1_Trend, W1_Trend;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
EventKillTimer();
ObjectDelete("forex.eamster_L_1");
ObjectDelete("forex.eamster_L_2");
ObjectDelete("forex.eamster_L_3");
ObjectDelete("forex.eamster_L_4");
ObjectDelete("forex.eamster_L_5");
ObjectDelete("forex.eamster_L_6");
}
void PlaceBuy(double NewLot)
{
int Tries=0;
if(AccountFreeMargin()<=0)return;
if(USE_FIRSTORDER)
{if(!FirstOrder){FirstOrder=True;strPrevOrder="BUY";}}
for(trade=OrdersTotal()-1;trade>=0;trade--)
{
intResult = OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderType() == OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber()== MagicNumber))return;
}
if(CLOSE_ON_REVERS)CloseAll(1, "ON REVERSE");
double TP=0, SL=0;
if (TAKE_PROFIT>0) TP = Ask + TAKE_PROFIT*Poin;
if (STOP_LOSS >0) SL = Bid - STOP_LOSS*Poin;
while(true)
{
RefreshRates();
ticket = OrderSend(Symbol(),OP_BUY,NewLot,Ask,OrderSlipage,0,0,strComment, MagicNumber,0,Green);
RefreshRates();
if (ticket > 0) //
{
Print("SL :", SL);
intResult = OrderSelect(ticket,SELECT_BY_TICKET);
intResult = OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Green);
OrderPrint();
strPrevOrder = "BUY";
OrderBar = Bars;
FirstEntry=True;
SL_UPDATED=False;
break;
}
else
{
Print("Order Modify Error(",GetLastError(),"): ",ErrorDescription(GetLastError()));
int error = GetLastError();
Print("Error(",error,"): ",ErrorDescription(error));
if(error==134){break;}
Tries++;
if(Tries>=3)break;
Sleep(1000);
RefreshRates();
}
}
}
void PlaceSell(double NewLot)
{
int Tries=0;
if(AccountFreeMargin()<=0)return;
if(USE_FIRSTORDER)
{if(!FirstOrder){FirstOrder=True;strPrevOrder="SELL";}}
for(trade=OrdersTotal()-1;trade>=0;trade--)
{
intResult = OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderType() == OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber()== MagicNumber))return;
}
if(CLOSE_ON_REVERS)CloseAll(0, "ON REVERSE");
double TP=0, SL=0;
if (TAKE_PROFIT>0) TP = Bid - TAKE_PROFIT*Poin;
if (STOP_LOSS >0) SL = Ask + STOP_LOSS*Poin;
while(true)
{
RefreshRates();
ticket = OrderSend(Symbol(),OP_SELL,NewLot,Bid,OrderSlipage,0,0,strComment, MagicNumber,0,Red);
RefreshRates();
if (ticket > 0)
{
intResult = OrderSelect(ticket,SELECT_BY_TICKET);
intResult = OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Green);
OrderPrint();
strPrevOrder = "SELL";
OrderBar = Bars;
FirstEntry=True;
SL_UPDATED=False;
break;
}
else
{
Print("Order Modify Error(",GetLastError(),"): ",ErrorDescription(GetLastError()));
int error=GetLastError();
Print("Error(",error,"): ",ErrorDescription(error));
if(error==134){break;}
Tries++;
if(Tries>=3)break;
Sleep(1000);
RefreshRates();
}
}
}
void GetOpenOrders()
{
BUY_OPENS=0;BUYSTOP_OPENS=0;SEL_OPENS=0;SELSTOP_OPENS=0;MyOrderProfit=0;
BUY_PRICE=0; SEL_PRICE=0;
for(trade=0;trade<OrdersTotal();trade++) //SELECT FROM STARTS
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)
{
if (OrderType()==OP_BUY) {BUY_OPENS++;BUY_PRICE +=OrderOpenPrice();}
if (OrderType()==OP_SELL) {SEL_OPENS++;SEL_PRICE +=OrderOpenPrice();}
if (OrderType()==OP_BUYSTOP) BUYSTOP_OPENS++;
if (OrderType()==OP_SELLSTOP) SELSTOP_OPENS++;
MyOrderProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
string GetLastOpenOrdType(int MyMagic)
{
for(trade=OrdersTotal()-1;trade>=0;trade--) //SELECTS FROM LASTS
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber() == MyMagic)
{
if(OrderType()==0){return("BUY");}
if(OrderType()==1){return("SELL");}
}
}
}
return("-");
}
void CloseAll(int OrdType, string CloseReason)
{
bool Closed;
for(trade=OrdersTotal()-1;trade>=0;trade--)
{
intResult = OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber) // && OrderType()==OrdType)
{
Closed=Close_Orders(OrdType);
if(!Closed){Sleep(500); Closed=Close_Orders(OrdType);}
if(!Closed){Sleep(500); Closed=Close_Orders(OrdType);}
if(!Closed){Sleep(500); Closed=Close_Orders(OrdType);}
if (Closed){Print("*****Closing Reason :", CloseReason);}
}
}//Profit_Pips = Profit_Pips + Prev_Pips;
}
bool Close_Orders(int OrdType)
{
double Price=0;
bool Closed=False;
RefreshRates();
if(OrdType<2)
{
if(OrderType()==OP_BUY)Price=Bid;
if(OrderType()==OP_SELL)Price=Ask;
Closed=OrderClose(OrderTicket(),OrderLots(),Price,3,Blue);
}
else if(OrdType>1)
{
Closed=OrderDelete(OrderTicket());
}
return(Closed);
}
void TrailingStopStep( int byPips, int byStep ){
for (int i = 0; i < OrdersTotal(); i++) {
intResult = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == MagicNumber))){
if (OrderType() == OP_BUY){
if (Bid - OrderOpenPrice() > byPips * Poin){
if (OrderStopLoss() < Bid - (byPips+byStep) * Poin){
intResult = OrderModify(OrderTicket(), OrderOpenPrice(), Bid - (byPips+byStep) * Poin, OrderTakeProfit(), Red);
}
}
}
else if (OrderType() == OP_SELL){
if (OrderOpenPrice() - Ask > (byPips) * Poin){
if ((OrderStopLoss() > Ask + (byPips+byStep) * Poin) || (OrderStopLoss() == 0)){
intResult = OrderModify(OrderTicket(), OrderOpenPrice(),Ask + (byPips+byStep) * Poin, OrderTakeProfit(), Red);
}
}
}
}
}
}
void TrailingTP( int byPips, int byStep ){
for (int i = 0; i < OrdersTotal(); i++) {
intResult = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == MagicNumber))){
if (OrderType() == OP_BUY){
if (OrderOpenPrice()-Ask > byPips * Poin){ //(Bid - OrderOpenPrice() > byPips * Poin){
if (Ask < OrderTakeProfit() - (byPips+byStep) * Poin){
intResult = OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Ask + (byPips) * Poin, Lime);
}
}
}
else if (OrderType() == OP_SELL){
if (Bid-OrderOpenPrice() > (byPips) * Poin){ //(OrderOpenPrice() - Ask > (byPips) * Poin){
if (Bid > OrderTakeProfit() + (byPips+byStep) * Poin){//if ((OrderStopLoss() > Ask + (byPips+byStep) * Poin) || (OrderStopLoss() == 0)){
intResult = OrderModify(OrderTicket(), OrderOpenPrice(),OrderStopLoss(), Ask - (byPips) * Poin, Red);
}
}
}
}
}
}
void TrailingStopStepNew(int byPips, int byStep)
{
double NewTrail;
for (int i = 0; i < OrdersTotal(); i++)
{
intResult = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == MagicNumber)))
{
if (OrderType() == OP_BUY)
{
if(Ask>OrderOpenPrice()+byPips*Poin)
{
if(OrderStopLoss()<OrderOpenPrice())
{
NewTrail=OrderOpenPrice()+byStep*Poin;
intResult = OrderModify(OrderTicket(), OrderOpenPrice(), NewTrail, OrderTakeProfit(), Lime);
}
if(OrderStopLoss()>=OrderOpenPrice()&&Ask>OrderStopLoss()+byPips*Poin)
{
NewTrail=OrderStopLoss()+byStep*Poin;
intResult = OrderModify(OrderTicket(), OrderOpenPrice(), NewTrail, OrderTakeProfit(), Lime);
}
}
}
if (OrderType()==OP_SELL)
{
if(Bid<OrderOpenPrice()-byPips*Poin)
{
if(OrderStopLoss()>OrderOpenPrice()||OrderStopLoss()==0)
{
NewTrail=OrderOpenPrice();
intResult = OrderModify(OrderTicket(), OrderOpenPrice(), NewTrail, OrderTakeProfit(), Lime);
}
if(OrderStopLoss()<=OrderOpenPrice()&&Bid<OrderStopLoss()-byPips*Poin)
{
NewTrail=OrderStopLoss()-byStep*Poin;
intResult = OrderModify(OrderTicket(), OrderOpenPrice(), NewTrail, OrderTakeProfit(), Lime);
}
}
}
}
}
}
void BreakEven(double byPips)
{
for (int i = 0; i < OrdersTotal(); i++) {
intResult = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && (OrderMagicNumber() == MagicNumber) && (OrderStopLoss()!=OrderOpenPrice())){
if (OrderType() == OP_BUY){
if (Bid - OrderOpenPrice() > byPips * Poin){ //100-90=10
intResult = OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), Lime);
}
}
else if (OrderType() == OP_SELL){
if (OrderOpenPrice() - Ask > byPips * Poin){ //110-100=10
intResult = OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice(), OrderTakeProfit(), Red);
}
}
}
}
}
double LastClosed()
{
int EXPONENT=2;double CummLoss=0, Required_Profit=0;
if(EXPONENT<=0)return(LOT_SIZE);
double LastOrdProfit=0;
MyOrderProfit=0;CummLoss=0;
double LastLot=LOT_SIZE;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
intResult=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && (OrderMagicNumber()==MagicNumber))
{
MyOrderProfit = OrderProfit()+OrderSwap()+OrderCommission();
if(MyOrderProfit<Required_Profit)
{ //LostOrders++;
if(MyOrderProfit>0)break;
CummLoss += MyOrderProfit;
if(LastOrdProfit==0)LastOrdProfit = MyOrderProfit;
LastLot = MathMax(LastLot, OrderLots());
Print("LastLot: ", LastLot, " OrderLots(): ", OrderLots(), " MyOrderProfit: ", MyOrderProfit, " LastOrdProfit: ", LastOrdProfit);
}
else if(MyOrderProfit>0)break;
}
}
Print("*****MyOrderProfit*****: ", MyOrderProfit, " CummLoss: ", CummLoss, " LastLot: ", LastLot);
if(LastOrdProfit>0&&CummLoss<0)return(LastLot);
if(MyOrderProfit!=0)
{
if(MyOrderProfit<Required_Profit){return(LastLot*EXPONENT);}
}
if(CummLoss<0){return(LastLot*EXPONENT);}
return(LOT_SIZE);
}
string EQG_SIGNAL()
{
string log_file_name = "EQG.txt";
int str_size;
int handle = FileOpen(log_file_name, FILE_READ|FILE_WRITE|FILE_CSV);
if (handle > 0) {
str_size=FileReadInteger(handle,INT_VALUE);
string FileData = FileReadString(handle, str_size);
FileClose(handle);
return(FileData);
}
return("NO SIGNAL");
}
double DoubleOnLoss(int MyMagic)
{
double MyOrdProfit=0;
int LostOrders=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
intResult=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && (OrderMagicNumber()==MyMagic)) //||OrderMagicNumber()==Magic+1||OrderMagicNumber()==Magic+2))
{
MyOrdProfit = OrderProfit()+OrderSwap()+OrderCommission();
if(MyOrdProfit<=0)return(OrderLots()*2);
else if(MyOrdProfit>0)break;
}
}
return(LOT_SIZE);
}
void SL_UPDATE()
{
GetOpenOrders();
double MySL=0;
if(BUY_OPENS>0)MySL=BUY_PRICE/BUY_OPENS;
if(SEL_OPENS>0)MySL=SEL_PRICE/SEL_OPENS;
for (int i = 0; i < OrdersTotal(); i++)
{
intResult = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && (OrderMagicNumber() == MagicNumber))
{
if (OrderType() == OP_BUY){intResult = OrderModify(OrderTicket(), OrderOpenPrice(), MySL-STOP_LOSS*Poin, 0, Lime);}
else if (OrderType() == OP_SELL){intResult = OrderModify(OrderTicket(), OrderOpenPrice(), MySL+STOP_LOSS*Poin, 0, Red);}
}
SL_UPDATED=TRUE;
}
return;
}
void MyLabel() {
int Lbl_FontSize=15;
if(USE_M1)
{
string name_0 = LblName + "L_1";
if (ObjectFind(name_0) == -1) {
ObjectCreate(name_0, OBJ_LABEL, 0, 0, 0);
ObjectSet(name_0, OBJPROP_CORNER, 2);
ObjectSet(name_0, OBJPROP_XDISTANCE, 50); //390);
ObjectSet(name_0, OBJPROP_YDISTANCE, 50);
}
int M1_LblColour = DarkGray;
if(M1_Trend=="BUY")M1_LblColour=Lime;
if(M1_Trend=="SELL")M1_LblColour=Red;
ObjectSetText(name_0, " M1 ", Lbl_FontSize, "Arial Black", M1_LblColour);
}
if(USE_M5)
{
string name_0 = LblName + "L_2";
if (ObjectFind(name_0) == -1) {
ObjectCreate(name_0, OBJ_LABEL, 0, 0, 0);
ObjectSet(name_0, OBJPROP_CORNER, 2);
ObjectSet(name_0, OBJPROP_XDISTANCE, 100); //390);
ObjectSet(name_0, OBJPROP_YDISTANCE, 50);
}
int M5_LblColour = DarkGray;
if(M5_Trend=="BUY")M5_LblColour=Lime;
if(M5_Trend=="SELL")M5_LblColour=Red;
ObjectSetText(name_0, " M5 ", Lbl_FontSize, "Arial Black", M5_LblColour);
}
if(USE_M15)
{
string name_0 = LblName + "L_3";
if (ObjectFind(name_0) == -1) {
ObjectCreate(name_0, OBJ_LABEL, 0, 0, 0);
ObjectSet(name_0, OBJPROP_CORNER, 2);
ObjectSet(name_0, OBJPROP_XDISTANCE, 150); //390);
ObjectSet(name_0, OBJPROP_YDISTANCE, 50);
}
int M15_LblColour = DarkGray;
if(M15_Trend=="BUY")M15_LblColour=Lime;
if(M15_Trend=="SELL")M15_LblColour=Red;
ObjectSetText(name_0, " M15 ", Lbl_FontSize, "Arial Black", M15_LblColour);
}
if(USE_M30)
{
string name_0 = Показано первые 50% кода (символов: 25848)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.