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

 

帮助我添加,横移
,纵移
,如果它也能工作..........cloud

//+------------------------------------------------------------------+
//|                                                Price Channel.mq4 |
//+------------------------------------------------------------------+



#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 DodgerBlue
//---- input parameters
extern int ChannelPeriod = 14;
//---- buffers
double UpBuffer[];
double DnBuffer[];
double MdBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0, DRAW_LINE);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexBuffer(0, UpBuffer);
   SetIndexBuffer(1, DnBuffer);
   SetIndexBuffer(2, MdBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Price Channel("+ChannelPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0, "UpCh");
   SetIndexLabel(1, "DownCh");
   SetIndexLabel(2, "MidCh");
//----
   SetIndexDrawBegin(0, ChannelPeriod);
   SetIndexDrawBegin(1, ChannelPeriod);
   SetIndexDrawBegin(2, ChannelPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Price Channel                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i, counted_bars = IndicatorCounted();
   int    k;
   double high, low, price;
//----
   if(Bars <= ChannelPeriod) 
       return(0);
//---- initial zero
   if(counted_bars < 1)
      for(i = 1;i <= ChannelPeriod; i++) 
          UpBuffer[Bars-i] = 0.0;
//----
   i = Bars - ChannelPeriod - 1;
   if(counted_bars >= ChannelPeriod) 
       i = Bars - counted_bars - 1;
   while(i >= 0)
     {
       high = High[i]; 
       low = Low[i]; 
       k = i - 1 + ChannelPeriod;
       while(k >= i)
         {
           price = High[k];
           if(high < price) 
               high = price;
           price = Low[k];
           if(low > price)  
               low = price;
           k--;
         } 
       UpBuffer[i] = high;
       DnBuffer[i] = low;
       MdBuffer[i] = (high + low) / 2;
       i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
 
splxgf >>:

Можно сделать горячий старт сразу в

init(){

while (true) {

//Вечный кайф

}

谢谢splxgf。我试过了,但是...... 好吧,我想我必须把这个冒险留到更好的时候。或者,也许其他人会对这个在我看来是许多专家的有益改进表现出兴趣。

 
hedger писал(а)>>

谢谢splxgf。我试过了,但是...... 好吧,我想我必须把这个冒险留到更好的时候。也许还有人会对这个在我看来是许多专家的有益改进表示兴趣。


看看该怎么做
int start()
{
while(true)
{
Sleep(5000); //延迟5秒,直到下一次迭代。
RefreshRates(); // 刷新数据
// 其余的代码。打开、关闭等的条件。
}
}
 
Djonon >>:

ПОмогите добавить, Сдвиг по горозинтали
и вертикали
Если ещё и работать бутет..........клювоо

extern int Сдвиг_по_горозинтали = 14; //КОЛ-ВО БАРОВ
extern int и_вертикали = 14; //КОЛ-ВО ПУНКТОВ
附加的文件:
 
hedger >>:

Для закрытия ордеров я пользуюсь советником JimsCloseOrders, который может закрывать любые ордера по выбору – или профитные, или убыточные, или все подряд, правда пришлось его немного подкорректировать - вот в этих двух строках кода

extern bool CloseOpenOrders = true;

extern bool CloseOrdersWithPlusProfit = false;

false и true надо поменять местами, иначе, если такую настройку выполнять при установке на график, почему-то начинает закрывать все ордера (видимо из-за последовательности выполнения команд программой, но не уверен, не спец).

У меня вопрос к профи.

Требуется, как можно быстрее запустить, например, советника, о котором шла речь выше, но все советники и скрипты начинают действовать с момента поступления первого тика на график. Если же выбранная для установки советника валютная пара оказалась не очень "активной" в этот момент, то потери могут быть значительными.

Существует ли возможность создания "общего" графика для всех валют, или воспользоваться поступающим тикам любой другой пары? Тики же в терминал поступают почти непрерывно. Где их можно перехватить?

这很简单,在

int init()
  {
    трали вали..
    start();
  }
初始化时,立即执行函数
start();
也可参见 "蜱 "的仿真,但不是这样的......

start() 是主函数。在Expert Advisors中,它是在下一个tick之后被调用。对 于自定义指标,在将指标附在图表上后的重新计算过程中,在客户终端打开时(如果指标附在图表上),以及在下一个tick出现后都会被调用。在脚本中,它在附加到图表 和初始化后立即执行。如果模块中没有start()函数,这个模块(专家顾问、脚本或自定义指标)就不能被启动。
 
int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID)。
double ask =MarketInfo("GBPUSD",MODE_ASK);
double point =MarketInfo("GBPUSD",MODE_POINT)。
OrderSend("GBPUSD",OP_BUY,0.01,ask,2,bid-15*Point,bid+15*Point) 。
Alert("GetLastError()")。
返回。
}

我从教程中提取了这个脚本;我想看看它是如何工作的;我编译并保存了它。当我运行它时,它失败了,为什么?它没有给我任何错误,只是不工作...

 
先生们。晚上好,各位。我在掌握这门语言方面完全没有运气。(((((((
我试图从成堆的专家顾问中改写一些东西,但当我需要写一些具体的东西时,我觉得很蠢......((
而现在......。
我想在专家顾问中做以下一行:
我有一个开盘的算法,我有利润,我希望它在一定时间后关闭,无论结果如何,
- 现在就这样添加?????????。
我希望能够在专家顾问中设置这个时间。例如,我希望交易在两小时、三小时或四小时后自行结束......。例如,根据新闻发布 时间。我想你明白我的意思。
如果有人知道,也许这样的问题在论坛上已经被问过了,至少给我一个链接。试图阅读教科书,一个只有神经的人,为高级程序员写的,嗯,当然不是为女士们写的。
如果有人不难,而且似乎是小事一桩,那就写上台词,我至少要把它们粘起来,然后也许会有效果。
一个大的女性请.......
 
Magiyanka >>:
Господа. Всем добрый вечер. У меня прям совсем ничего не получается в освоении языка. (((((((

extern int Час=2; //В начало кода
extern int Мин=6;
extern int Slippage  =  25;
extern int STUPID= 12830454;
//В конец кода отдельной функцией
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
void  OrdersCloseByTime(int MagicNumber)
{
   for(int i = 0; i < OrdersTotal(); i++)
   {
      // already closed
      if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES ) == false) continue;
      // not current symbol
      if(OrderSymbol() != Symbol()) continue;
      // order was opened in another way
      if(OrderMagicNumber() != MagicNumber) continue;
      if(Time[0]-OrderOpenTime( )>=Час*60*60+Мин*60){
        if(OrderType() == OP_SELL)
        OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slippage, Red);
        if(OrderType() == OP_BUY)
        OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), Slippage, Blue);
        }
   }
   
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int start()
{
 OrdersCloseByTime(STUPID);//STUPID это мажик номер Вашего советчика
 трали вали ...
关闭时间位置,你会把它放在哪里,以便不会丢失?
 
Lim1 >>:

int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID);
double ask =MarketInfo("GBPUSD",MODE_ASK);
double point =MarketInfo("GBPUSD",MODE_POINT);
OrderSend("GBPUSD",OP_BUY,0.01,ask,2,bid-15*Point,bid+15*Point);
Alert (GetLastError());
return;
}

Взял этот скрипт из учебника, хотел посмотреть как он работает - скомпилировал, сохранил. Запускаю - безрезультатно, почему?
Ошибок не выдает, просто не работает...

这样试试吧。

int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID);
double ask =MarketInfo("GBPUSD",MODE_ASK);
double point =MarketInfo("GBPUSD",MODE_POINT);
int tickkkkkkk=OrderSend("GBPUSD",OP_BUY,1,ask,2,bid-15*Point,bid+15*Point);
if(tickkkkkkk==-1){
 Alert ("Ошибка № "+GetLastError());
 if(GetLastError()==131)
 Alert ("Неправильный объем");
 if(GetLastError()==6)
 Alert ("Нет связи с торговым сервером");
 }
 else Alert ("Все ОК!!!");
return;
}
 
它不工作,它没有按时关闭,就是这样。
原因: