cs2011.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «cs2011.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Cs2011 — торговый советник для MetaTrader 5, работающий на основе индикатора MACD. Советник анализирует ценовые данные и технические показатели, формируя торговые сигналы для открытия позиций.
На каждом тике обрабатываются рыночные и торговые события MetaTrader. Сигналы пересчитываются при появлении нового бара, проверяется наличие открытых позиций и направление индикатора.
В советнике реализованы функции расчёта размера лота на основе текущего баланса и управления торговыми операциями через стандартный торговый API MetaTrader 5, включая проверку и отправку ордеров с установкой уровней фиксации прибыли и стоп-лосса.
Настройки программы
| Настройка | Описание |
|---|---|
| ????????? ??? (Risk) | Risk — Параметр риска, определяющий пропорцию депозита для расчёта размера торгового лота |
| TP | TP — Уровень фиксации прибыли в пунктах (0 — отключён) |
| SL | SL — Уровень стоп-лосса в пунктах (0 — отключён) |
| Fast | Fast — Период быстрой экспоненциальной скользящей средней индикатора MACD |
| Slow | Slow — Период медленной экспоненциальной скользящей средней индикатора MACD |
| Sign | Sign — Период сглаживания сигнальной линии индикатора MACD |
Поиск по коду файла
#property version "1.1"
input double Risk=3; // ????????? ???
input int TP=2200;
input int SL=0;
input int Fast=30;
input int Slow=500;
input int Sign=36;
double Money,Deposit=5000;
int MACD;
void OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
bool TradeSignalCounter(bool &UpSignal,bool &DnSignal)
{
if(Bars(_Symbol,0)<100) return(false);
static int Recount;
if(IsNewBar() || Recount)
{
double Ind[2],Sig[3];
DnSignal=false;
UpSignal=false;
Recount=false;
if(CopyBuffer(MACD,0,1,2,Ind)<0) Recount=true;
if(CopyBuffer(MACD,1,1,3,Sig)<0) Recount=true;
if(Recount==true) return(false);
if(Ind[0]>0 && Ind[1]<0) DnSignal=true;
if(Ind[0]<0 && Ind[1]>0) UpSignal=true;
if(Ind[1]<0 && Sig[0]<Sig[1] && Sig[1]>Sig[2]) DnSignal=true;
if(Ind[1]>0 && Sig[0]>Sig[1] && Sig[1]<Sig[2]) UpSignal=true;
return(true);
}
return(false);
}
bool TradePerformer(bool &UpSignal,bool &DnSignal)
{
if(UpSignal)
{
if(PositionOpen(POSITION_TYPE_BUY)) UpSignal=false;
}
if(DnSignal)
{
if(PositionOpen(POSITION_TYPE_SELL)) DnSignal=false;
}
return(true);
}
double Money_M()
{
HistorySelect(0,TimeCurrent());
int total=HistoryDealsTotal();
double profit=0;
for(int i=0;i<total;i++)
{
ulong deal_ticket=HistoryDealGetTicket(i);
if(HistoryDealGetString(deal_ticket,DEAL_SYMBOL)!=_Symbol) continue;
if(HistoryDealGetInteger(deal_ticket,DEAL_TYPE)>1) continue;
profit+=HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
profit+=HistoryDealGetDouble(deal_ticket,DEAL_SWAP);
}
Money=Deposit+profit;
if(PositionSelect(_Symbol))
{
Money+=PositionGetDouble(POSITION_PROFIT);
Money+=PositionGetDouble(POSITION_SWAP);
}
double Min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
double Limit=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT);
double Lots=Risk*Money/Deposit;
Lots=MathMin(Limit,MathMax(Min,Lots));
return(Lots);
}
bool PositionOpen(ENUM_POSITION_TYPE Type)
{
MqlTradeRequest request;
MqlTradeResult result;
MqlTradeCheckResult check;
ZeroMemory(request);
double volume=Money_M(Показано первые 50% кода (символов: 3765)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.