int mod_b() { //--------------------------------------------------------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер { if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий { // Анализ ордеров: int Tip=OrderType(); // Тип ордера if(OrderSymbol()!=Symb||Tip>1)continue;// Не наш ордер double SL=OrderStopLoss(); // SL выбранного орд. double TP =OrderTakeProfit(); // TP выбранного орд. double Price =OrderOpenPrice(); // Цена выбранн. орд. int Ticket=OrderTicket(); // Номер выбранн. орд. //------------------------------------------------------ 3 -- while(true) // Цикл модификации { double TS=Tral_Stop; // Исходное значение int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Миним. дист&&((SL<TS && Tip==0)||(SL>TS && Tip==1)) if (TS < Min_Dist) // Если меньше допуст. TS=Min_Dist; // Новое значение TS //--------------------------------------------------- 4 -- bool Modify=false; // Не назначен к модифи switch(Tip) // По типу ордера { case 0 : // Ордер Buy if (NormalizeDouble(SL,Digits)< // Если ниже желаем. NormalizeDouble(Bid-TS*Point,Digits)) { SL=Price+18*Point; // то модифицируем его string Text="Buy "; // Текст для Buy Modify=true; // Назначен к модифи. } break; // Выход из switch case 1 : // Ордер Sell if (NormalizeDouble(SL,Digits)> // Если выше желаем. NormalizeDouble(Ask+TS*Point,Digits) || NormalizeDouble(SL,Digits)==0)//или равно нулю { SL=Price-18*Point; // то модифицируем его Text="Sell "; // Текст для Sell Modify=true; // Назначен к модифи. } } // Конец switch if (Modify==false) // Если его не модифи break; // Выход из while //--------------------------------------------------- 5 --
Alert ("Модификация ",Text,Ticket,". Ждём ответ.."); bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифи его! //--------------------------------------------------- 6 -- if (Ans==true) // Получилось :) { Alert ("Ордер ",Text,Ticket," модифицирован:)"); break; // Из цикла модифи. }
int mod_f() { //--------------------------------------------------------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер { if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий { // Анализ ордеров: int Tip=OrderType(); // Тип ордера if(OrderSymbol()!=Symb||Tip>1)continue;// Не наш ордер double SL=OrderStopLoss(); // SL выбранного орд.
int f = 3; //номер бара с которого идет проверка наличия фрагтала int DnN = 0, UpN = 0; //порядковый номер присвоен к направлению(upper, lower) double UpFr = 0, DnFr = 0; //числовое значение фрагтала выраженное в еденице валюты присвоен к направлению(upper, lower) while (f < Bars && (UpFr == 0 || DnFr == 0)) { if (iFractals(Symbol(), 0, MODE_UPPER, f) != 0) if (UpFr == 0) { UpFr = iFractals(Symbol(), 0, MODE_UPPER, f);//фрактальная отложка вверх(buy) UpN = f; } if (iFractals(Symbol(), 0, MODE_LOWER, f) != 0) if (DnFr == 0) { DnFr = iFractals(Symbol(), 0, MODE_LOWER, f);//фрактальная отложка вниз(sell) DnN = f; } f++; } //------------------------------------------------------ 3 -- while(true) // Цикл модификации { double UD; double TS=UD; // Исходное значение int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Миним. дист if(Tip==0) UD=DnFr; if(Tip==1) UD=UpFr; if (TS < Min_Dist) // Если меньше допуст. TS=Min_Dist; // Новое значение TS //--------------------------------------------------- 4 -- bool Modify=false; // Не назначен к модифи switch(Tip) // По типу ордера { case 0 : // Ордер Buy if (NormalizeDouble(SL,Digits)< // Если ниже желаем. NormalizeDouble(UD,Digits)) { SL=UD; // то модифицируем его string Text="Buy "; // Текст для Buy Modify=true; // Назначен к модифи. } break; // Выход из switch case 1 : // Ордер Sell if (NormalizeDouble(SL,Digits)> // Если выше желаем. NormalizeDouble(UD,Digits) || NormalizeDouble(SL,Digits)==0)//или равно нулю { SL=UD; // то модифицируем его Text="Sell "; // Текст для Sell Modify=true; // Назначен к модифи. } } // Конец switch if (Modify==false) // Если его не модифи break; // Выход из while //--------------------------------------------------- 5 -- double TP =OrderTakeProfit(); // TP выбранного орд. double Price =OrderOpenPrice(); // Цена выбранн. орд. int Ticket=OrderTicket(); // Номер выбранн. орд.
Alert ("Модификация ",Text,Ticket,". Ждём ответ.."); bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифи его! //--------------------------------------------------- 6 -- if (Ans==true) // Получилось :) { Alert ("Ордер ",Text,Ticket," модифицирован:)"); break; // Из цикла модифи. }
プロフェッショナルたちよ、力を貸してくれ!1つのターミナルで4つの通貨にExpert Advisorをインストールしましたが、そのうち1つの通貨にしか注文を開きません。その理由は何でしょうか。4通貨を 同時に使えるようにするにはどうしたらいいですか?
私自身、最近この問題に取り組んでいます。EAで通貨の列挙を行うだけでなく、Point, ask, bid, digitsを正しく指定する必要があります。各通貨のヒストリカルデータが使用されている場合は、それを入れ替えます。通貨iBar、iCloseが 定義されている計算がある場合、NULLの代わりに通貨列挙を挿入します。以下は25通貨ペアの例です。私は大した専門家ではないのかもしれませんが、専門家から明確な答えが得られず、自分でやってみるしかないのです。
うん)
こんなに早く答えてくれるんだから、馬鹿な質問にも答えてくれよ。コードでエラー1を出したら、端末がそれを投げ返してくるのか?この情報はサーバーに行かないのですか?
私は質問に参加し、「エラー130」とだけ付け加えます。
返信が早いので、くだらない質問に答えてください。コードでエラー1を出したら、端末に投げ返されるのでしょうか?この情報はサーバーに行かないのですか?
さっそく教えてあげよう。
- 私はセルゲイエフではありません :)
- とか、わからないんです :)
しかし
- 経験すればすぐにわかります。)
こんなに早く答えてくれるんだから、馬鹿な質問にも答えてくれよ。コードで1を間違えたら、端末がそれを投げ返してくるのか?この情報はサーバーに行かないのでしょうか?
確認したところ、そうではありませんでした。修正による端末の対応です。
確認したところ、そうではなく、改造による、端末の反応です。
1.EURUSDまたはGBPUSD など...- それは、あらゆるものを意味 する...ticket=OrderSend(EURUSD, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen);
2.sy=Symbol(); ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen); - この意味は 代入で...です。
このスマートな関数(オンライン用のOpenPosition()関数 )を使って解決し、フクロウのコードに貼り付ければ、すべてがうまくいくでしょう。
モディファイを使ったループに問題があります。
ブレイクイーブンを使ってフラクタル修正をしたら、フラクタルとブレイクイーブンで無限に修正できた。
は、https://book.mql4.com/ru/trading/ordermodify に基づいて修正されます。
//ф-я модификации ордеров безубыток
int mod_b()
{
//--------------------------------------------------------------- 2 --
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
int Tip=OrderType(); // Тип ордера
if(OrderSymbol()!=Symb||Tip>1)continue;// Не наш ордер
double SL=OrderStopLoss(); // SL выбранного орд.
double TP =OrderTakeProfit(); // TP выбранного орд.
double Price =OrderOpenPrice(); // Цена выбранн. орд.
int Ticket=OrderTicket(); // Номер выбранн. орд.
//------------------------------------------------------ 3 --
while(true) // Цикл модификации
{
double TS=Tral_Stop; // Исходное значение
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Миним. дист&&((SL<TS && Tip==0)||(SL>TS && Tip==1))
if (TS < Min_Dist) // Если меньше допуст.
TS=Min_Dist; // Новое значение TS
//--------------------------------------------------- 4 --
bool Modify=false; // Не назначен к модифи
switch(Tip) // По типу ордера
{
case 0 : // Ордер Buy
if (NormalizeDouble(SL,Digits)< // Если ниже желаем.
NormalizeDouble(Bid-TS*Point,Digits))
{
SL=Price+18*Point; // то модифицируем его
string Text="Buy "; // Текст для Buy
Modify=true; // Назначен к модифи.
}
break; // Выход из switch
case 1 : // Ордер Sell
if (NormalizeDouble(SL,Digits)> // Если выше желаем.
NormalizeDouble(Ask+TS*Point,Digits)
|| NormalizeDouble(SL,Digits)==0)//или равно нулю
{
SL=Price-18*Point; // то модифицируем его
Text="Sell "; // Текст для Sell
Modify=true; // Назначен к модифи.
}
} // Конец switch
if (Modify==false) // Если его не модифи
break; // Выход из while
//--------------------------------------------------- 5 --
Alert ("Модификация ",Text,Ticket,". Ждём ответ..");
bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифи его!
//--------------------------------------------------- 6 --
if (Ans==true) // Получилось :)
{
Alert ("Ордер ",Text,Ticket," модифицирован:)");
break; // Из цикла модифи.
}
int mod_f()
{
//--------------------------------------------------------------- 2 --
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
int Tip=OrderType(); // Тип ордера
if(OrderSymbol()!=Symb||Tip>1)continue;// Не наш ордер
double SL=OrderStopLoss(); // SL выбранного орд.
//------------------------------------------------------обсчет фрактала
int f = 3; //номер бара с которого идет проверка наличия фрагтала
int DnN = 0, UpN = 0; //порядковый номер присвоен к направлению(upper, lower)
double UpFr = 0, DnFr = 0; //числовое значение фрагтала выраженное в еденице валюты присвоен к направлению(upper, lower)
while (f < Bars && (UpFr == 0 || DnFr == 0))
{
if (iFractals(Symbol(), 0, MODE_UPPER, f) != 0)
if (UpFr == 0)
{
UpFr = iFractals(Symbol(), 0, MODE_UPPER, f);//фрактальная отложка вверх(buy)
UpN = f;
}
if (iFractals(Symbol(), 0, MODE_LOWER, f) != 0)
if (DnFr == 0)
{
DnFr = iFractals(Symbol(), 0, MODE_LOWER, f);//фрактальная отложка вниз(sell)
DnN = f;
}
f++;
}
//------------------------------------------------------ 3 --
while(true) // Цикл модификации
{
double UD;
double TS=UD; // Исходное значение
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Миним. дист
if(Tip==0)
UD=DnFr;
if(Tip==1)
UD=UpFr;
if (TS < Min_Dist) // Если меньше допуст.
TS=Min_Dist; // Новое значение TS
//--------------------------------------------------- 4 --
bool Modify=false; // Не назначен к модифи
switch(Tip) // По типу ордера
{
case 0 : // Ордер Buy
if (NormalizeDouble(SL,Digits)< // Если ниже желаем.
NormalizeDouble(UD,Digits))
{
SL=UD; // то модифицируем его
string Text="Buy "; // Текст для Buy
Modify=true; // Назначен к модифи.
}
break; // Выход из switch
case 1 : // Ордер Sell
if (NormalizeDouble(SL,Digits)> // Если выше желаем.
NormalizeDouble(UD,Digits)
|| NormalizeDouble(SL,Digits)==0)//или равно нулю
{
SL=UD; // то модифицируем его
Text="Sell "; // Текст для Sell
Modify=true; // Назначен к модифи.
}
} // Конец switch
if (Modify==false) // Если его не модифи
break; // Выход из while
//--------------------------------------------------- 5 --
double TP =OrderTakeProfit(); // TP выбранного орд.
double Price =OrderOpenPrice(); // Цена выбранн. орд.
int Ticket=OrderTicket(); // Номер выбранн. орд.
Alert ("Модификация ",Text,Ticket,". Ждём ответ..");
bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифи его!
//--------------------------------------------------- 6 --
if (Ans==true) // Получилось :)
{
Alert ("Ордер ",Text,Ticket," модифицирован:)");
break; // Из цикла модифи.
}
すべての未決済注文の手数料を決定する機能/コマンドがあるかどうか教えてください。