SN Simple Swing
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «sn simple swing.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
SN Simple Swing — торговый советник для MetaTrader 4, предназначенный для ручного валютного трейдинга. Он отображает на графике кнопки BUY, SELL и CLOSE, через которые трейдер открывает и закрывает позиции. Размер лота рассчитывается на основе заданного риска и динамически вычисляемого расстояния стоп-лосса. При неблагоприятном движении открытой позиции на величину стоп-лосса советник автоматически открывает противоположную позицию с увеличенным лотом.
Советник выводит на график текущую информацию: дневной и месячный профит, текущий спред, уровень вариантного стоп-лосса, стартовый лот, значение Risk Manager Stop и кредитное плечо. Функция Equity Stop позволяет закрыть все ордера при достижении эквити заданного уровня.
Встроена проверка доступа к счёту с возможностью ограничения по списку разрешённых аккаунтов. Также в коде предусмотрены отключённые по умолчанию механизмы защиты по времени и ключу.
Настройки программы
| Настройка | Описание |
|---|---|
| comment | Комментарий, присваиваемый к ордерам советника. |
| order_magic | Магический номер для идентификации ордеров советника. 0 означает ручной режим. |
| risk | Процент риска. Допустимые значения: 1, 2, 4, 8, 16, 32, 64, 128. |
| order_sl | Процент стоп-лосса, используемый для расчёта размера лота и проверки спреда. |
| FONT_SIZE | Размер текста кнопок в пунктах. |
| text_size | Размер текста информационного блока в пунктах. |
| background_width | Ширина фона информационного блока в пикселях. |
| RiskManager_Stop | Уровень эквити для остановки торговли и закрытия всех ордеров при достижении указанного значения. Если равен 0 — функция отключена. |
Поиск по коду файла
/*
*/
/*
13.12
проверить работу с сериями ордеров несколкьо по одной паре, гдето идет сбой с комментарием и последующим открытием следующего в серии.
обрывает серию.
*/
#define MarketVersion
string serror="Invalid account! For purchase please write to 'd**n*@ya.ru'";
string _access[]=
{
"Gavrilin",
"Koval",
"Гратковский"
};
#property version "3.10"
#property description "This EA need for manual forex trading. The entry point you choose yourself on the work entrust adviser."
#property strict
#include <SovetnikovGUI\Button.mqh>
#include <SovetnikovGUI\Orders.mqh>
#ifdef AutoButton
#resource "\\Indicators\\SN ZZag.ex4"
#endif
/*
Правила торговли, торгует в течении дня пока не получит стоп.
*/
S comment=""; //Comments
extern int order_magic=0; //Magic (0-manual)
D risk=1; //Risk (%)
D order_sl=0.5; //SL %
I FONT_SIZE=10; //Button Text Size (points)
I text_size=10; //Text Size (points)
C text_color=clrWhite; //Text Color
C background_color=clrBlack; //Background Color
I background_width=200; //Backgroud Width (pixels)
D RiskManager_Stop=0; //Equity Stop (level equity $)
int slippage=0;
#include <Controls\Button.mqh>
#define IDENT_LEFT1 (90)
#define IDENT_TOP1 (20)
#define BUTTON_SIZE (80)
#define COLOR_GREEN (clrLawnGreen)
#define NO_COLOR (clrGainsboro)
SNButton m_buy,m_sell,m_close,m_auto;
double g_lot=0;
datetime tm=0;
int maxOrders=50;
class CMain: public COrders
{
public:
void Tick(int op,bool bPress=false)
{
string smb=_Symbol;
m_name=smb;
Update();
double spread=GetSpread(_Symbol);
double sl=getStop();
double dlot=0;
double drisk=risk;
if(sl>0) dlot=getLotBySL(drisk,sl);
if(bPress)
{
if(dlot>0 && sl>0)
{
if(spread>=sl)
{
Alert("The spread is larger than stoploss, trade can not be continued.");
return;
}
if(op==1)
{
OrderSend(OP_BUY,dlot,-1,0,0,comment);
}
if(op==-1)
{
OrderSend(OP_SELL,dlot,-1,0,0,comment);
}
}
}
ulong it=getOrderTicket(BUY|SELL);
if(OrderSelect(it))
{
int itype=OrderType();
if(itype==OP_BUY)
{
double pt=OrderStep();
if(pt<=-sl)
{
double dnextlot=NLot(OrderLots()+dlot);
OrderSend(OP_SELL,dnextlot,-1,0,0,comment);
}
}
else if(itype==OP_SELL)
{
double pt=OrderStep();
if(pt<=-sl)
{
double dnextlot=NLot(OrderLots()+dlot);
OrderSend(OP_BUY,dnextlot,-1,0,0,comment);
}
}
}
}
};
CMain main();
CDraw draw;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
Destroy();
draw.DeleteAll();
CDrawMini::DeleteAllObjects(0,"buy");
CDrawMini::DeleteAllObjects(0,"sell");
CDrawMini::DeleteAllObjects(0,"closeall");
CDrawMini::DeleteAllObjects(0,"auto");
}
void OnTick()
{
// код доступен только после оплаты
}
#ifndef MarketVersion
static bool balert=false;
if(!checkAccount())
{
if(!balert){ Alert(serror); balert=true;}
ExpertRemove();
return;
}
#endif
CreateElements();
if(!main.IsWork()) return; //торговля не разрешена
int all=main.Update(); //получим кол-во ордеров в структуре orders
double p=main.p;
string n=main.m_name;
if(AccountEquity()<=RiskManager_Stop && RiskManager_Stop>0 && all>0)
{
Print("Equity RiskManager_Stop: ",DoubleToString(AccountEquity(),2)," EA is Stop");
main.OrderCloseAll(ALL);
return;
}
main.Tick(0,false);
if(IsTesting() && IsVisualMode())
{
OnTimer();
if(m_buy.Pressed())
{
Print("Press button BUY");
main.Tick(1,true);
Показано первые 50% кода (символов: 6326)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.