Market Short
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «$smgo_short.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Market Short — торговый советник для MetaTrader 4, предназначенный для открытия коротких (sell) позиций на валютном рынке. Советник позволяет размещать несколько ордеров с настраиваемыми параметрами стоп-лосса и тейк-профита, как в ценовых единицах, так и в пипсах.
Основная функция советника — расчёт объёма позиции на основе процента риска от баланса счёта с последующей проверкой лимитов минимального и максимального лота. При активации параметра UseExistingStops советник считывает стоп-лосс и тейк-профит первого найденного ордера и применяет их к новым позициям.
Советник использует торговые API MetaTrader 4 для отправки и модификации ордеров, выводит информацию об ошибках через алерты, воспроизводит звуковой сигнал при успешной модификации и делает скриншоты графиков после каждой операции.
Настройки программы
| Настройка | Описание |
|---|---|
| ins0 | Текстовая метка, обозначающая группу настроек количества ордеров. |
| Number_of_order | Количество ордеров, которые советник разместит за один запуск. |
| UseExistingStops | Переключатель: при значении true советник при наличии существующих sell-ордеров с тем же магическим номером берёт стоп-лосс и тейк-профит первого найденного ордера и применяет их к новым позициям. |
| Lots | Размер лота для каждого ордера. Если значение равно 0, лот рассчитывается автоматически на основе процента риска и размера стоп-лосса. |
| ins1 | Текстовая метка, обозначающая группу настроек процента риска. |
| Risk | Процент риска от баланса счёта, используемый для автоматического расчёта размера лота. Значение 0 отключает расчёт по риску. |
| ins2 | Текстовая метка, обозначающая группу настроек стоп-лосса и тейк-профита в цене. |
| SlAsPrice | Стоп-лосс, заданный как конкретная цена. Если значение не нулевое, приоритет отдаётся ценовому стоп-лоссу вместо пипсового. |
| TpAsPrice | Тейк-профит, заданный как конкретная цена. Если значение не нулевое, приоритет отдаётся ценовому тейк-профиту вместо пипсового. |
| ins3 | Текстовая метка, обозначающая группу настроек стоп-лосса и тейк-профита в пипсах. |
| SlAsPips | Стоп-лосс, заданный в пипсах относительно текущей цены Bid. Используется при условии, что SlAsPrice равен нулю. |
| TpAsPips | Тейк-профит, заданный в пипсах относительно текущей цены Bid. Используется при условии, что TpAsPrice равен нулю. |
| Slippage | Допустимое проскальзывание цены при отправке ордера. |
| MagicNumber | Магический номер, идентифицирующий ордера, открытые данным советником, при поиске и управлении позициями. |
| TradeComment | Комментарий, присваиваемый каждому размещённому ордеру для идентификации в истории торгов. |
Поиск по коду файла
#property show_inputs
#include <stdlib.mqh>
extern string ins0="Number orders to place";
extern int Number_of_order = 1;
extern bool UseExistingStops = true;
extern double Lots=0;
extern string ins1="Risk Percent. 0=Disabled";
extern double Risk=0.5;
extern string ins2="Stop loss and take profit as price";
extern double SlAsPrice;
extern double TpAsPrice;
extern string ins3="Stop loss and take profit as pips";
extern double SlAsPips=25;
extern double TpAsPips=50;
extern double Slippage = 1;
extern int MagicNumber=7077;
extern string TradeComment = "";
int Width = 1376;
int Height = 768;
double takeprofit,StopLoss,StopLossPips, Slip;
int Divisor=1, ticket=0, sellOrders, totalOrders;
double MinLotSize,MaxLotSize,point,AmountAtRisk,PointCostValue,LotSize;
double FirstOrderTicket,FirstOrderTakeProfit, FirstOrderStopLoss,FirstOrderOpenPrice;
string Currency="";
string SymbolExtra="";
string Lot="";
int start()
{
// код доступен только после оплаты
}
int err ;
int i = 0;
Slip = Slippage;
double FiveDigitM;
if(StringFind(Symbol(), "JPY",0) > 0)
FiveDigitM = 100 ;
else
FiveDigitM = 10000 ;
point=Point;
if(Digits == 5 || Digits == 3 || Symbol() == "XAUUSD")
{
point = Point * 10 ;
Slip = Slippage * 10;
Divisor = 10;
}
sellOrders = CountOrders(Symbol(), MagicNumber, OP_SELL);
if (TpAsPrice==0 && TpAsPips==0) takeprofit=0;
if (!TpAsPips==0) takeprofit = Bid - TpAsPips / FiveDigitM;
if (!TpAsPrice==0) takeprofit=TpAsPrice;
if (SlAsPrice==0 && SlAsPips==0) StopLoss=0;
if (!SlAsPips==0) StopLoss = Bid + SlAsPips / FiveDigitM ;
if (!SlAsPrice==0) StopLoss=SlAsPrice;
StopLossPips = (StopLoss - Bid) / point;
if(UseExistingStops && sellOrders>0)
{
FirstOrderTicket=GetFirstTicketBymagic(MagicNumber);
StopLossPips = (FirstOrderStopLoss-Bid) / point;
}
PointCost();
if(Lots==0) Calc();
if(!UseExistingStops || sellOrders==0)
{
ticket=0;
for(i = 0; i < Number_of_order; i++)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,TradeComment,MagicNumber,0,Red);
err = GetLastError() ;
if ( err != 0)
Alert("Failed to create Order. Error = ",ErrorDescription(err)) ;
else
{
OrderModify(ticket ,OrderOpenPrice(), StopLoss,takeprofit,0,CLR_NONE);
err = GetLastError() ;
if ( err != 0)
Alert("Failed to Modify Order. Error = ",ErrorDescription(err), " Order Id:, ", ticket, " Limit = ", takeprofit, " Stop loss = ", StopLoss ) ;
else
PlaySound("ok.wav") ;
}
WindowScreenShot("ScreenShots\\"+Symbol()+"_M"+Period()+"\\"+Symbol()+"_M"+ Period()+"_"+TimeToStr(iTime(NULL, 0, 0),TIME_DATE)+"_"+TimeHour(TimeCurrent())+"_"+TПоказано первые 50% кода (символов: 4456)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.