[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 491

 
rasvet >>:

вот скрипт. присоединяешь к любому графику-он закрывает все открытые ордера.

注文を閉じるには、JimsCloseOrders Expert Advisorを使います。これは、利益確定や損失確定、あるいはすべての注文を自由に閉じることができます。

extern bool CloseOpenOrders = true;

extern bool CloseOrdersWithPlusProfit = false;

false true は入れ替えてください。そうしないと、チャートにインストールするときにこの設定をすると、なぜかすべての注文を決済し始めます(おそらくプログラムコマンドのシーケンスのせいだと思いますが、私は資格がないのでよくわかりません)。

プロに質問 です。

例えば、先ほどのExpert Advisorをできるだけ早く実行したいのですが、Expert Advisorやスクリプトはすべてチャート上で最初のティックを受信すると同時に動作が開始されます。エキスパートアドバイザーをインストールするために選択した通貨ペアが、その時点であまり「活発」でないことが判明した場合、損失が大きくなる可能性があります。

全通貨の「共通」チャートを作成したり、他のペアの受信ティックを使用する機会はありますか? ティックはターミナルでほぼ連続的に受信されます。どこで傍受できるのか?

 
hedger писал(а)>>

プロの方に質問 です。

例えば先ほどのExpert Advisorをできるだけ早く動かしたいのですが、Expert Advisorやスクリプトはすべてチャート上で最初のティックを受信すると同時に動作が開始されます。エキスパートアドバイザーをインストールするために選択した通貨ペアが、その時点であまり「活発」でないことが判明した場合、損失が大きくなる可能性があります。

全通貨の「共通」チャートを作成したり、他のペアの受信ティックを使用する機会はありますか? ダニはほぼ連続的に端末に受信されます。どこで傍受できるのか?


Expert Advisorをループさせるだけで十分です。そうすると、ティックで動作するのではなく、一定の時間遅れ(ユーザーが設定)で動作するようになります。多通貨オプションの場合(IMHO)最良の解決策です。

 
Vinin >>:


Достаточно зациклить эксперта. Тогда он будет работать не по тикам, а с определенной временной задержкой (задаваемой пользователем). Для мультивалютных вариантов (ИМХО) лучшее решение.

明らかに、そんなに複雑なことではないのですが、残念ながら「まだそれを経験していない」ので、できないのです。しかし、そのような改良を加えたEAがどのような挙動を示すのか、見てみたいものです。ありがとうございます。

 
この式(V-出来高、High-Low-最大・最小ローソク足)を使ったインジケータがあります。
V
___________ =
ハイロー

もしそうでなければ、どなたかヒストグラムを別ウィンドウでスケッチしていただけませんか?
 
この式(V-出来高、High-Low-最大・最小ローソク足)を使ったインジケータがあります。
V
___________ =
ハイロー

もしそうでなければ、どなたかヒストグラムを別ウィンドウでスケッチしていただけませんか?
 
hedger >>:

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

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

でホットスタートができます。

init(){。

while (true) {

//エターナルハイ

}

 
//+------------------------------------------------------------------+
//|                                 BW Market Facilitation Index.mq4 |
//|                                           объединенный с Volumes |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//|                             Доработка AlexSilver http://viac.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property indicator_minimum 0
#property indicator_buffers 5
#property indicator_color1 Black
#property indicator_color2 Green // Зеленая свеча
#property indicator_color3 Blue // Угасающая
#property indicator_color4 Gold // Фальшивая
#property indicator_color5 Red // приседающая 
//---- indicator buffers
extern int Period_MFI =   14;
double dMFIBuffer[];
double dMFIUpVUpBuffer[]; // Зеленая 
double dMFIDownVDownBuffer[]; // Угасающая
double dMFIUpVDownBuffer[]; // Фальшивая
double dMFIDownVUpBuffer[]; // приседающая 

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
//---- indicator buffers mapping
   SetIndexBuffer(0,dMFIBuffer);       
   SetIndexBuffer(1,dMFIUpVUpBuffer);
   SetIndexBuffer(2,dMFIDownVDownBuffer);
   SetIndexBuffer(3,dMFIUpVDownBuffer);
   SetIndexBuffer(4,dMFIDownVUpBuffer);
//---- drawing settings
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexStyle(4,DRAW_HISTOGRAM);   

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("BW MFI + Volumes");
   SetIndexLabel(0,"BW MFI");      
   SetIndexLabel(1,"Зелёный");
   SetIndexLabel(2,"Угасающий");
   SetIndexLabel(3,"Фальшивый");
   SetIndexLabel(4,"Приседающий");

//---- sets drawing line empty value
   SetIndexEmptyValue(1, 0.0);
   SetIndexEmptyValue(2, 0.0);       
   SetIndexEmptyValue(3, 0.0);
   SetIndexEmptyValue(4, 0.0);      
   
   IndicatorDigits(0);   
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| BW Market Facilitation Index                                     |
//+------------------------------------------------------------------+
int start()
  {
   int    i,nLimit,nCountedBars;
//---- bars count that does not changed after last indicator launch.
   nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted
   if(nCountedBars>0) nCountedBars--;
   nLimit=Bars-nCountedBars;
//---- Market Facilitation Index calculation
   for(i=0; i<nLimit; i++)
     if(i==0 && Volume[i]<Period()*1.5)
        dMFIBuffer[i]=0.0;
     else   
        dMFIBuffer[i]=(High[i]-Low[i])/(Volume[i]*Point);
//---- dispatch values between 4 buffers   
   for(i=nLimit-1; i>=0; i--)
    {
     if((i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]>dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))||
        (i!=nLimit-1&&dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+2])/iMFI(NULL,0,Period_MFI,i+2)||
        (i<nLimit-2&&dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+3]/iMFI(NULL,0,Period_MFI,i+3))||        
        (i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]>dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||
        (dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))) 
       {
        dMFIUpVUpBuffer[i]=Volume[i]/iMFI(NULL,0,Period_MFI,i);
        dMFIDownVDownBuffer[i]=0.0;
        dMFIUpVDownBuffer[i]=0.0;
        dMFIDownVUpBuffer[i]=0.0;
        continue;
       }
     if((i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]<dMFIBuffer[i+2]&&Volume[i]<Volume[i+1])||
        (i!=nLimit-1&&dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||
        (i<nLimit-2&&dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2)&&Volume[i]<Volume[i+3]/iMFI(NULL,0,Period_MFI,i+3))||        
        (i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]<dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||        
        (dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))) 
       {
        dMFIUpVUpBuffer[i]=0.0;
        dMFIDownVDownBuffer[i]=Volume[i]/iMFI(NULL,0,Period_MFI,i);
        dMFIUpVDownBuffer[i]=0.0;
        dMFIDownVUpBuffer[i]=0.0;
        continue;         
       }
     if((i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]>dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i+1)<Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))||
        (i!=nLimit-1&&dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||
        (i<nLimit-2&&dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]==Volume[i+1]&&Volume[i]==Volume[i+2]&&Volume[i]<Volume[i+3])||        
        (i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]>dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||        
        (dMFIBuffer[i]>dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)<Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))) 
       {
        dMFIUpVUpBuffer[i]=0.0;
        dMFIDownVDownBuffer[i]=0.0;
        dMFIUpVDownBuffer[i]=Volume[i]/iMFI(NULL,0,Period_MFI,i);
        dMFIDownVUpBuffer[i]=0.0;
        continue;         
       }
     if((i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]<dMFIBuffer[i+2]&&Volume[i]>Volume[i+1])||
        (i!=nLimit-1&&dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||
        (i<nLimit-2&&dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i+1)==Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2)/iMFI(NULL,0,Period_MFI,i+2)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+3]/iMFI(NULL,0,Period_MFI,i+3))||        
        (i!=nLimit-1&&bCompareDouble(dMFIBuffer[i],dMFIBuffer[i+1])&&dMFIBuffer[i]<dMFIBuffer[i+2]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)==Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1)&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+2]/iMFI(NULL,0,Period_MFI,i+2))||        
        (dMFIBuffer[i]<dMFIBuffer[i+1]&&Volume[i]/iMFI(NULL,0,Period_MFI,i)>Volume[i+1]/iMFI(NULL,0,Period_MFI,i+1))) 
       {
        dMFIUpVUpBuffer[i]=0.0;
        dMFIDownVDownBuffer[i]=0.0;
        dMFIUpVDownBuffer[i]=0.0;
        dMFIDownVUpBuffer[i]=Volume[i]/iMFI(NULL,0,Period_MFI,i);
        continue;         
       }        
    }                     
//---- done
   return(0);
  }
//+------------------------------------------------------------------+
 bool bCompareDouble (double dNumber1, double dNumber2)
    {
     bool bCompare=NormalizeDouble(dNumber1 - dNumber2,8) == 0;
     return(bCompare);
    }
 

 
どうにかしてポジションを 開くチュートリアルスクリプトを作りました -

int start()
{
int ticketです。
if(iRSI(NULL,0,5,PRICE_CLOSE,0)<10)とする。
{
ticket=OrderSend(Symbol()、OP_BUY、1、Ask、0、Bid-10*Point、Ask+10*Point)。
if(チケット<0)
{
Print("OrderSendはエラー#で失敗しました",GetLastError());
return(0)です。
}
}
return(0)です。

通貨ペアに添付する - 効果なし。あるのでしょうか、それとも何か問題があるのでしょうか?説明してください。
 

では、どのようなエラーが出ているのでしょうか?

 
OrderSend(Symbol(),OP_BUY,1,Ask,0/*ゼロの代わりに任意の許容スリッページ*/,Bid-10*Point, Ask+10*Point)を送信。