Modify_All_TP_SL
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «set tp (price).mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Скрипт Modify_All_TP_SL предназначен для массовой модификации всех активных ордеров (рыночных и отложенных) на текущем символе в MetaTrader 4. Он позволяет одновременно изменить уровни Take Profit и Stop Loss у всех открытых позиций и отложенных ордеров.
При запуске скрипт перебирает все ордера, отфильтровывая только те, что принадлежат текущему символу. Для каждого ордера проверяются тип (BUY, SELL, отложенные) и корректность заданных уровней прибыли и убытка. Если значения Take Profit или Stop Loss не заданы (равны нулю или не соответствуют условиям), используются текущие уровни ордера.
Модификация выполняется через функцию OrderModify с автоматическим повтором при ошибке и ожиданием обновления котировок. Скрипт работает только с ордерами, у которых ещё не наступило время закрытия.
Настройки программы
| Настройка | Описание |
|---|---|
| TakeProfit | Уровень Take Profit (цена) для модификации ордеров. Если значение равно 0 или не соответствует условиям по стороне ордера, используется текущий Take Profit ордера. |
| StopLoss | Уровень Stop Loss (цена) для модификации ордеров. Если значение равно 0 или не соответствует условиям по стороне ордера, используется текущий Stop Loss ордера. |
Поиск по коду файла
#property version "2.00"
#property description "The script modifies all orders (market and pending) on the symbol Take Profit and Stop Loss."
#property script_show_inputs
#property strict
input double TakeProfit=0; //Take Profit (price)
input double StopLoss=0; //Stop Loss (price)
void OnStart()
{
// код доступен только после оплаты
}
if(OrdersTotal()>0)
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
double tp=NormalizeDouble(TakeProfit,_Digits);
double sl=NormalizeDouble(StopLoss,_Digits);
if(OrderSymbol()==Symbol())
{
int ticket=OrderTicket();
if(tp<=0) tp=OrderTakeProfit();
if(sl<=0) sl=OrderStopLoss();
if(OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
{
if(OrderType()==OP_SELL)
{
if(tp>Ask) tp=OrderTakeProfit();
if(sl<Ask) sl=OrderStopLoss();
}
else
{
if(tp>=OrderOpenPrice()) tp=OrderTakeProfit();
Показано первые 50% кода (символов: 1434)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.