AK-47 EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ak-47 scalper ea - mt5.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
AK-47 EA — торговый советник для MetaTrader 5, предназначенный для автоматической работы на рынке. Советник размещает отложенные ордера типа SellStop с автоматической установкой стоп-лосса и тейк-профита, а также управляет открытыми позициями с помощью трейлинг-стопа.
Советник поддерживает фильтрацию по времени торговли и максимальному спреду, что позволяет ограничивать торговлю в заданных условиях. Расчёт объёма позиции может выполняться на основе процента риска от баланса или фиксированного лота.
Внутри советника используется магический номер для идентификации управляемых позиций и ордеров. Обработка рыночных и торговых событий реализована через стандартные обработчики OnTick, OnInit и OnDeinit платформы MetaTrader 5.
Настройки программы
| Настройка | Описание |
|---|---|
| <EA Settings> -------- (EASettings) | Текстовый разделитель для группы настроек советника. |
| Magic Number (InpMagicNumber) | Магический номер для идентификации ордеров и позиций советника. |
| <Money Settings> -------- (MoneySettings) | Текстовый разделитель для группы настроек управления капиталом. |
| Allow Volume Percent (isVolume_Percent) | Переключатель расчёта объёма позиции в процентах от баланса. |
| Risk Percentage of Balance (%) (InpRisk) | Процент риска от баланса для расчёта объёма позиции. |
| <Trading Settings> -------- (TradingSettings) | Текстовый разделитель для группы торговых настроек. |
| Lots (Inpuser_lot) | Фиксированный размер лота (при отключённом расчёте в процентах). |
| Stoploss (in Pips) (InpSL_Pips) | Стоп-лосс в пунктах. |
| TP (in Pips) (0 = No TP) (InpTP_Pips) | Тейк-профит в пунктах (0 — без тейк-профита). |
| Maximum slippage allow_Pips. (InpMax_slippage) | Допустимое проскальзывание в пунктах. |
| Maximum allowed spread (in Point) (0 = floating) (InpMax_spread) | Максимально допустимый спред в пунктах (0 — плавающий). |
| <Trading Time Settings> -------- (TimeSettings) | Текстовый разделитель для настроек времени торговли. |
| Trading Time Filter (InpTimeFilter) | Переключатель фильтрации по времени торговли. |
| Start Hour (InpStartHour) | Час начала торговой сессии. |
| Start Minute (InpStartMinute) | Минута начала торговой сессии. |
| End Hour (InpEndHour) | Час окончания торговой сессии. |
| End Minute (InpEndMinute) | Минута окончания торговой сессии. |
Поиск по коду файла
???//+------------------------------------------------------------------+
#property version "1.00"
#property strict
#define ExtBotName "AK-47 EA" //Bot Name
#define Version "1.00"
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>
#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)
#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
input string EASettings = "---------------------------------------------"; //-------- <EA Settings> --------
input int InpMagicNumber = 124656; //Magic Number
input string MoneySettings = "---------------------------------------------"; //-------- <Money Settings> --------
input bool isVolume_Percent = true; //Allow Volume Percent
input double InpRisk = 3; //Risk Percentage of Balance (%)
input string TradingSettings = "---------------------------------------------"; //-------- <Trading Settings> --------
input double Inpuser_lot = 0.01; //Lots
input double InpSL_Pips = 3.5; //Stoploss (in Pips)
input double InpTP_Pips = 7; //TP (in Pips) (0 = No TP)
input int InpMax_slippage = 3; //Maximum slippage allow_Pips.
input double InpMax_spread = 5; //Maximum allowed spread (in Point) (0 = floating)
input string TimeSettings = "---------------------------------------------"; //-------- <Trading Time Settings> --------
input bool InpTimeFilter = true; //Trading Time Filter
input int InpStartHour = 2; //Start Hour
input int InpStartMinute = 30; //Start Minute
input int InpEndHour = 21; //End Hour
input int InpEndMinute = 0; //End Minute
int Pips2Points; // slippage 3 pips 3=points 30=points
double Pips2Double; // Stoploss 15 pips 0.015 0.0150
bool isOrder = false;
int slippage;
long acSpread;
string strComment = "";
CPositionInfo m_position; // trade position object
CTrade m_trade; // trading object
CSymbolInfo m_symbol; // symbol info object
CAccountInfo m_account; // account info wrapper
COrderInfo m_order; // pending orders object
int OnInit() {
// код доступен только после оплаты
}
void OnDeinit(const int reason) {
}
void OnTick() {
// код доступен только после оплаты
} //---End fuction
void OpenOrder(){
ENUM_ORDER_TYPE OrdType = ORDER_TYPE_SELL;//-1;
double TP = 0;
double SL = 0;
string comment = ExtBotName;
double lot1 = CalculateVolume();
if(OrdType == ORDER_TYPE_SELL) {
double OpenPrice = Bid - NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits);
TP = OpenPrice - NormalizeDouble(InpTP_Pips * Pips2Double, _Digits);
SL = Ask + NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits);
if(CheckSpreadAllow() //Check Spread
&& CheckVolumeValue(lot1) //Check volume
&& CheckOrderForFREEZE_LEVEL(ORDER_TYPE_SELL_STOP, OpenPrice) //Check Dist from openPrice to Bid
&& CheckStopLoss(OpenPrice, SL, TP) //Check Dist from SL, TP to OpenPrice
&& CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_SELL)) //Check Balance khi lenh cho duoc Hit
{
if(!m_trade.SellStop(lot1, OpenPrice, m_symbol.Name(), SL, TP, ORDER_TIME_GTC, 0, comment))
Print(__FUNCTION__,"--> OrderSend error ", m_trade.ResultComment());
}
}
else if(OrdType == ORDER_TYPE_BUY) {
double OpenPrice = Ask + NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits);
SL = Bid - NormalizeDouble(InpSL_Pips/2 * Pips2Double, _Digits);
if(CheckSpreadAllow() //Check Spread
&& CheckVolumeValue(lot1) //Check volume
&& CheckOrderForFREEZE_LEVEL(ORDER_TYPE_BUY_STOP, OpenPrice) //Check Dist from openPrice to Bid
&& CheckStopLoss(OpenPrice, SL, TP) //Check Dist from SL, TP to OpenPrice
&& CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_BUY)) //Check Balance khi lenh cho duoc Hit
{
if(!m_trade.BuyStop(lot1, OpenPrice, m_symbol.Name(), SL, TP, ORDER_TIME_GTC, 0, comment))// use "ORDER_TIME_GTC" when expiration date = 0
Print(__FUNCTION__,"--> OrderSend error ", m_trade.ResultComment());
}
}
}
void TrailingStop() {
double SL_in_Pip = 0;
for(int i = PositionsTotal() - 1; i >= 0; i--) {
if(m_position.SelectByIndex(i)) { // selects the orders by index for further access to its properties
if((m_position.Magic() == InpMagicNumber) && (m_position.Symbol() == m_symbol.Name())) {
if(m_position.PositionType() == POSITION_TYPE_BUY) {
SL_in_Pip = NormalizeDouble(Bid - m_position.StopLoss(), _Digits) / Pips2Double;
if(SL_in_Pip > InpSL_Pips) {
double newSL = NormalizeDouble(Bid - InpSL_Pips * Pips2Double, _Digits);
if(!m_trade.PositionModify(m_position.Ticket(), newSL, m_position.TakeProfit())) {
Print(__FUNCTION__,"--> OrderModify error ", m_trade.ResultComment());
continue;
}
}
}
else if(m_position.PositionType() == POSITION_TYPE_SELL) {
SL_in_Pip = NormalizeDouble(m_position.StopLoss() - Bid, _Digits) / Pips2Double;
if(SL_in_Pip > InpSL_Pips){
double newSL = NormalizeDouble(Bid + (InpSL_Pips) * Pips2Double, _Digits);
if(!m_trade.PositionModify(m_position.Ticket(), newSL, m_position.TakeProfit())) {
Показано первые 50% кода (символов: 10871)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.