Спрашивайте! - страница 74

 
WNW:
Я хочу запускать свои советники с VPS.

В целях безопасности я хочу закодировать номер своего брокерского счета и загрузить скомпилированную версию.

Может ли кто-нибудь описать код, который нужно добавить?

Спасибо.

Код находится здесь (на первой странице этой темы https://www.mql5.com/en/forum/174194 ).

Кроме того, в разделе elite есть советник с кодировкой защиты счета.

1. MA_ExpertProfit.mq4: это тот же советник, но он будет закрывать ордера только в s/l или t/p.

2. MA_ExpertProfit_all.mq4: он будет закрывать ордер на s/l или t/p, или на другом сигнале пересечения. Этот советник должен работать только на определенном счете. Просто измените строку "int Account = 111111;" на номер вашего счета внутри кода. Например, ваш счет 1235463. Поэтому эта строка должна выглядеть следующим образом:

int Account = 1235463;

3. MA_ExpertProfit_noacc.mq4: это то же самое, что и пункт № 2. Но без счета и может работать на любом счете (я имею в виду счет в Metatrader).

Если вы не являетесь членом элиты, я могу опубликовать коды здесь, но это очень известная тема, описанная здесь в открытом доступе: https://www.mql5.com/en/forum/174194.

Более сложным является создание номера лицензии, установка брокера,

UserVerification(Confirmed)

и так далее.

Как я знаю, некоторые кодеры очень профессиональны в этом вопросе, так что вы можете увидеть их в этой теме https://www.mql5.com/en/forum/174194.

 

Магическое число

int j,totalbuy;

totalbuy=OrdersTotal();

for(j=0;j<totalbuy;j++)

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol())

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

return(0);

}

Как ссылаться на магическое число в приведенном выше закрытии. Аналогично, в ордере на покупку? Заранее благодарю за ответ!

Дэйв

<<<

 
int j,totalbuy;

totalbuy=OrdersTotal();

for(j=0;j<totalbuy;j++)

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

return(0);

}
 

Спасибо, что откликнулись!!!

Дэйв

 

Вопрос по логическому потоку

Как мне переходить от одного логического оператора к другому, если окажется, что я должен вернуться к определенному предыдущему логическому оператору, пока не будет выполнено условие, а если оно будет выполнено, то мне придется перейти к другому, еще более раннему логическому оператору?

Я знаю, что в простом базовом я бы использовал оператор goto.

Дэйв <<<
 

Изменение цвета в утверждении ObjectCreate

Я пытаюсь изменить цвет отображения прибыли с лаймового на красный в зависимости от прибыли билетов. Я столкнулся с зарезервированными словами Lime и Red и не могу понять, как добиться изменения этих цветов в операторе ObjectSetText.

string Lime;

string Red;

string PlusMinusColor = "";[/PHP]

if (BuyProfit+SellProfit>=0) PlusMinusColor=Lime;

if (BuyProfit+SellProfit<0) PlusMinusColor=Red;[/PHP]

[PHP]

Profit1=BuyProfit+SellProfit;
[PHP] ObjectSetText("Profit1", DoubleToStr(Profit1,2), 16, "Arial",PlusMinusColor );

Может ли кто-нибудь помочь мне в этом?

Дэйв <<<

Спасибо за помощь - я действительно это имею в виду!

 

Отображение прибыли или убытка большими буквами на графике

Я догадался!

 
double BP(j)=0,BP=0,SP=0;[/PHP]

[PHP]int j,TotalOrders;

TotalOrders=OrdersTotal();

for(j=0;j<TotalOrders;j++)

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == OrderID && OrderCloseTime() == 0)

{

BP(j) = OrderProfit() + OrderSwap() + OrderCommission();//BuyProfit - GETTING ERRORS ABOUT BP(j)

}

else

if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber() == OrderID && OrderCloseTime() == 0)

{

SP(j)= OrderProfit() + OrderSwap() + OrderCommission();//SellProfit - GETTING ERRORS ABOUT SP(j).

}

BuyProfit=BuyProfit+BP(j); // GETTING ERRORS!

SellProfit=SellProfit+SP(j); // GETTING ERRORS!

return(0);

Я попытался закодировать это, но, как видно, у меня получилось не совсем правильно.

Может ли кто-нибудь из вас, прекрасных кодеров, помочь мне исправить это?

Дэйв <<<
 
1Dave7:
double BP(j)=0,BP=0,SP=0;[/php][php]int j,TotalOrders;

TotalOrders=OrdersTotal();

for(j=0;j<TotalOrders;j++)

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == OrderID && OrderCloseTime() == 0)

{

BP(j) = OrderProfit() + OrderSwap() + OrderCommission();//BuyProfit - GETTING ERRORS ABOUT BP(j)

}

else

if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber() == OrderID && OrderCloseTime() == 0)

{

SP(j)= OrderProfit() + OrderSwap() + OrderCommission();//SellProfit - GETTING ERRORS ABOUT SP(j).

}

BuyProfit=BuyProfit+BP(j); // GETTING ERRORS!

SellProfit=SellProfit+SP(j); // GETTING ERRORS!

return(0);

Я попытался закодировать это, но, как видно, у меня получилось не совсем правильно.

Может ли кто-нибудь из вас, прекрасных кодеров, помочь мне исправить это?

Dave <<<

Если вы хотите, чтобы "BP" был массивом, то вы должны использовать скобки "[ ]", а не парантезу "( )", как в примере:

BP[j]

..., а не ...

BP(j)

... что выглядит как вызов функции.

 

Проблема с прибылью.

Что-то простое, в чем мне нужна помощь.

double EntryPoint = 1.000;

int MiniLots = 1;

Валюта закрылась на уровне .880

Я безуспешно пытался получить значение прибыли следующим образом:

Profit=EntryPoint*MiniLots - (я пробовал минус Ask, Bid, Close[0]) *100;

Все, что я получаю, это Profit=0.00, когда я должен получить Profit=12.00. Я запутался?

Я не удивлюсь, если ответ будет в том, что рынок закрыт?

Что вы скажете по поводу того, в чем моя проблема?

Дэйв <<<