[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 439

 
我有时也在想,为什么开发人员不在终端机上做两个按钮:"赚 "和 "耗",而要做这么多废话。这些问题将被减少一个数量级。
 
Necron >>:

Добрый всем! В общем проблема следующего плана. Есть тс, по которой нужно открывать позицию тройным лотом, после чего каждый лот сопровождается отдельно(со своим TP, сигналом закрытия). Интересуют способы реализации. Мне на ум пришел такой способ: использовать три отложенника, запоминать их тикеты, а потом каждый отдельно выбирать и закрывать по своему условию. Есть ли какие-либо другие способы (или более удобные)?

PS. Поймите правильно, около месяца назад только своего первого советника на машках написал=)))))

为每个订单设置一个注释("lot_1", "lot_2"....),根据注释识别订单...

如果不清楚,那么可以写更多的细节描述...

 
StatBars >>:

установите каждому ордеру свой коммент("lot_1","lot_2"....), по коменту распознавайте ордера...

Если не понятно то пишите подробнее можно будет описать...

谢谢你,StatBars!只是我已经开始用魔术师的选择做了。你的方案我想应该是这样的?(我承认我记得有一个类似的EA =))那么哪个方案是最理想的呢?

if ( (OrderSymbol() == Symbol()) &&
(StringSubstr(OrderComment(),0,0) == "lot_1") )

 
Necron >>:

Спасибо, StatBars! Просто я уже начал делать с выбором по магику. Ваш вариант думаю так будет выглядеть? (признаюсь, вспомнил что в одном из советников было похожее =)) Тогда какой вариант наиболее оптимален?

if ( (OrderSymbol() == Symbol()) &&
(StringFind(OrderComment(),"lot_1") >= 0) )

纠正了一点。

我通常使用magik和符号来识别 "我的 "EA的订单。

我把所有其他信息都放在评论中。

我不会说这将是什么最佳选择,因为你无法看到你以后将如何处理这些订单,以及另外3个订单是否可以打开....。

 
chief2000 >>:



Будет срабатывать на каждом тике пока выполняется условие. Небось код для тещи переделываете? :)





衷心感谢您!编译后一切正常,每次打勾时都有提示音。

我的婆婆还没有来,但如果有的话......,我会采纳这个想法的))))。

 

对不起,有一个问题。如何以编程方式使客户端崩溃。

在我对反编译的研究中,我遇到了反编译的模糊性。现在的问题是如何使用它。

选择是让系统崩溃。

或挂起反编译器。

 
StatBars >>:

Поправил немного.

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

Всю остальную информацию запихиваю в коммент.

Я бы не сказал что тут будет что-то оптимальнее, не видно же что Вы потом будуте делать с ордерами и может ли открыться ещё одна 3-ка ордеров....

谢谢你!在专家顾问中对您的变体进行了纠正。我将完成这个奇迹,并将其上传到代码基地,作为我的第一个(或多或少)严肃的创作!)我编写专家顾问的系统被称为Muteki,但它有一点是我添加的(用于仓位管理)。很好,至少有一个指标,可以建立所有这些趋势=)))

只是出现了另一个问题。我如何同时开设三个职位(或大约一个报价)?这是否正确,还是有其他方法?我不能用吊坠来做=() 小距离有时太多:(


if(b1==0 && !IsTradeContextBusy())
{
if(Low[0]<HHL_1 && Bid>=HHL_1 && trade_buy==true)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage*PointX,sl_b,BuyTarget1,"lot_1_buy",Magic,0,Lime);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("lot_1_buy order opened : ",OrderOpenPrice());
b1=1;
}
else Print("Error opening BUY order : ",GetLastError());

return(0);
}
}

 
// ищем самый последний закрытый ордер
for( i=OrdersHistoryTotal(); i>=0; i--){
  if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==16384){
        if(OrderCloseTime()!=0){
          if(OrderCloseTime()> time){
          time=OrderCloseTime();
          profit=OrderProfit();
          
            //мартин
            if( profit<=0) Lots=OrderLots()*2;
            //----
            
            
          }
        }
      }
    }
  }
}
//-----

该函数搜索最后一个平仓的手数,如果它出现亏损,其开立新交易的手数将乘以两倍。

在实践中,每一笔新的交易,无论交易是否盈利,都是以地段为单位翻倍。


问题:什么是错的?

 
Summer:

我记得我正在重做的一个函数。下面是代码。手数(在ordersend中)=getLots(), koeff=手数增量系数(默认为2) 我在测试中得到的手数最多为10手(从0.1开始)))))

double getLots() {

double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
int round;
if(minlot==0.01)round=2;
if(minlot==0.1) round=1;
double koeff=2;
double result=Lots;

int total = OrdersHistoryTotal();
double spread = MarketInfo(Symbol(), MODE_SPREAD);

for (int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderProfit() > 0)
{
result = Lots;

} else {
result = OrderLots() * koeff;

}
}
}
result = NormalizeDouble(result, round);
if (result > maxlot) {
result = maxlot;
}
if (result < minlot) {
result = minlot;
}
RefreshRates();
return(result);
}

 

函数中有一个错误,我找不到,不是用 就是用 {

我附上了代码。

原因: