[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 251

 
skyjet:
专业人士,请帮助我我在一个终端上为4种货币安装了我的专家顾问,但它只在其中一种货币上开单。这方面的原因可能是什么?我怎样才能让它同时在4种货币中工作?

我自己最近也在处理这个问题。除了在EA中做货币的枚举,你还需要正确地指定点,问,买,数字。交换每种货币的历史数据,如果它被使用。如果有预定的货币iBar、iClose 的计算,也要插入货币枚举,而不是NULL。这里有一个25种货币对的例子。也许我不是一个伟大的专家,但我没有从专家那里得到明确的答案,我不得不自己去尝试。


int nnnn;
string SymbolMax[25] = {"EURUSD", "GBPUSD", "USDCHF", "USDJPY", "AUDUSD", 
                        "USDCAD", "EURGBP", "EURJPY", "GBPJPY", "AUDCAD", 
                        "EURAUD", "EURCAD", "GBPCHF", "AUDCHF", "AUDJPY", 
                        "CADCHF", "CADJPY", "CHFJPY", "GBPAUD", "GBPCAD", 
                        "NZDCAD", "AUDNZD", "NZDJPY", "EURNZD", "NZDUSD"};

     if(nnnn<24) nnnn+=1; else nnnn=0;
     bid=MarketInfo(SymbolMax[nnnn],MODE_BID);
     ask=MarketInfo(SymbolMax[nnnn],MODE_ASK);
     point=MarketInfo(SymbolMax[nnnn],MODE_POINT);
     digits=MarketInfo(SymbolMax[nnnn],MODE_DIGITS);
     Startimeframe4();


 
sergeev:
是的 :)
既然你回答得这么快,请回答我一个愚蠢的问题--如果我在代码中犯了错误1,终端会不会把它扔回给我?这些信息不进入服务器吗?
 
granit77:
既然你回答得这么快,请回答我一个愚蠢的问题--如果我在代码中犯了错误1,终端会不会把它扔回给我?这些信息不是要传到服务器上吗?

我加入了这个问题,只是补充说:"错误130"。

 
granit77:
既然你回复得这么快,请回答我一个愚蠢的问题--如果我在代码中犯了错误1,终端会不会把它扔回给我?这些信息没有进入服务器?


我马上就告诉你。

- 我不是谢尔盖夫 :)

- 而我不知道 :)

但是

- 这很容易通过经验发现 :)

 
granit77:
既然你回答得这么快,请回答我一个愚蠢的问题--如果我在代码中犯了错误1,终端会不会把它扔回给我?这些信息不进入服务器吗?

我检查过了,没有。是通过修改终端的反应。
 
sergeev:
检查过了,不是的。通过修改,是终端的反应。
谢谢你,这样我就可以放心了。
 
Roman.:


1.欧元兑美元或英镑兑美元 等...-这意味着所有的事情 ...ticket=OrderSend(EURUSD, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen) 。

2.sy=符号(); 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; // Из цикла модифи.
}

 
LazarevDenis:
请告诉我是否有一个函数/命令可以决定所有未结订单的佣金。
为什么不自己用 OrderCommission()函数来计算金额