[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 140

 
valeryk:

bool NewBar()
{static datetime newbar;
bool res=false;
if(newbar==0)newbar=Time[0];
if(newbar!=Time[0]){res=true;newbar=Time[0];}
return(res);
} ・Newbar=0(newbar=0) newbar=Time[0]) {res=true;newbar=Time[0];} ・Newbar!

新しいバーの存在感.

シンボルがバーの始 値に置かれることは理解した。そして、終値であることが必要です。
私はプログラマーではないので、あなたのコードを挿入するのに失敗しました。特に、このブールNewBar()を嫌がります。
 
supernyb:
アイコンはバーの始値で設定されているそうですね。終値で設定する必要があります。
私はプログラマーではないので、あなたのコードを挿入することはできませんでした。特に、このブールNewBar()を嫌がります。
気配値とバー設定の時間:15分間に注目してください。 この間にClose[0]が変化する可能性があると思いますか?
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(NevBar()) 
     {
     //в этом блоке размещайте ваш код
     }    
//----
   return(0);
  }
//-----------------------------------------------------------------------------+
// Функция контроля нового бара                                                |
//-----------------------------------------------------------------------------+
bool NevBar(){
   static int PrevTime=0;
   if (PrevTime==Time[0]) return(false);
   PrevTime=Time[0];
   return(true);} 
 

もう1回、お願いします。こんにちは、S. Kovalevのチュートリアルのスクリプトをベースにしました。Expert Advisor を作って、取引を開始し、ストップロス、テイクプロフィットを入れて、取引が終了する(=ストップロスや利益が出る)のを待ち、その時だけ取引を再開したいのですが、どうしたらいいですか?サイクル、サイクル割り込みで試しました。どうしたらよいかアドバイスをお願いします。ストップロスやテイクプロフィットを一度に設定せず、一定水準に近づいたら決済する方が楽かもしれないと思いましたが、スリッページが怖いのと、一点一点が重要なので、そのようなやり方はしたくありません。1つの案件、時には2つの案件を一度に開くことは理解できたが(これも間違いか?)、案件が終了した後に新しい案件を開くことができない。またはプログラムがパフォーマンスのストップロスまたはtekaprofitを待っていたように、処方する方法を助言し、オンリーその後上に行きましたか?

//+------------------------------------------------------------------------------+
int start() //---- function start
{
double //---- 変数の宣言
x,
y;
//+---------------------------------------------------------------------+
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point); //----買いの成行注文、始値から15ポイントにストップと利益を入れる
//+--------------------------------------------------------------+
while(x!=Ask-15*Point|||y!=Ask+15*Point)//---- 前の取引が終了するまで、取引を終了させたい条件の、すなわちе.が可能です。
{//----- 1つの取引だけをオープンにしておく
続けてください。//---- 条件を中断して次のステップに進む
}
//+------------------------------------------------------------------+
return;//---- function return
}
//+-----------------------------------------------------------------------------+.

 

ストップかテイクかを気にしないのであれば、オープンオーダーがあるかないかを確認すればいいのでは?

if(OrdersTotal()<1))

 

このような場合、どうしたらよいか教えてください。インジケーターがあるんです。チャートに縦線を引いてからプロパティを呼び出し、数値をコピーしてインジケータに入力する必要があります。

マウスでクリックしたところにインジケータが表示されると良いですね。

せめて、チャート上でマウスを使って移動できるようになればいいのですが。


ファイル:
indicator.mq4  3 kb
 
Begemot7:

もう1回、お願いします。こんにちは、S. Kovalevのチュートリアルのスクリプトをベースにしました。Expert Advisor を作って、取引を開始し、ストップロス、テイクプロフィットを入れて、取引が終了する(=ストップロスや利益が出る)のを待ち、その時だけ取引を再開したいのですが、どうすればいいですか?サイクル、サイクル割り込みで試しました。どうしたらよいかアドバイスをお願いします。ストップロスやテイクプロフィットを一度に設定せず、一定水準に近づいたら決済する方が楽なのではと思いましたが、スリッページが怖いのと、一点一点が重要なので、そのようなやり方はしたくありません。1つの案件、時には2つの案件を一度に開くことは理解できたが(これも間違いか?)、案件が終了した後に新しい案件を開くことができない。またはプログラムがパフォーマンスのストップロスまたはtekaprofitを待っていたように、処方する方法を助言し、唯一のその後さらに行った?

int ticket=-1;
int start()       //---- функеция старт            
  {
  double     //---- объявляю переменные 
  x,
  y;
  bool sel;
  //+------------------------------------------------------------------+
  sel=false;
  if(ticket>=0)
   {
    sel=OrderSelect(ticket,SELECT_BY_TICKET);if(!sel) ticket=-1;
   }
  if(ticket<0 || (sel && ticket>=0 && OrderCloseTime()>0)) ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);
   return;                                                          //---- функция return 
    }

または、次のようにするとよいでしょう(Expert Advisor を再起動する場合)。

int ticket=-1;
int init()
 {
  if(GlobalVariableCheck("TICKET")) ticket=GlobalVariableGet("TICKET");
  else ticket=-1;
 }
int start()          
 {
  bool sel;
  sel=false;
  if(ticket>0)
   {
    sel=OrderSelect(ticket,SELECT_BY_TICKET);if(!sel) ticket=-1;
   }
  if(ticket<=0 || (sel && ticket>0 && OrderCloseTime()>0))
   {
    ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);
    if(ticket>0) GlobalVariableSet("TICKET",ticket);
   }
   return; 
  }
 
r772ra:
引用時刻に注意、アイコンが設定された時刻は15分、この間にClose[0]が変化することがあると思うか


これはちょうどいい!ありがとうございます。言われた通りやってみたら全てうまくいきました!スタープライスのClose[0]の代わりにClose[1]も入れてみたら、私のマークが終値で 描かれていることが判明しました。思っていたように1小節も待たない。
 
001:

マウスでクリックしたところにインジケータを配置してほしい。

インジケータが投げられた地点の座標を得るには、関数を使用することができます。

WindowXOnDropped()

WindowYOnDropped()

価格と時間

WindowPriceOnDropped()

WindowTimeOnDropped()

 
valeryk:

bool NewBar()
{静的な日時であるnewbar。
bool res=false とする。
if(newbar==0)newbar=Time[0];
if(newbar!=Time[0]){res=true;newbar=Time[0];}.
return(res)です。
}

新しいバーの利用可能性 .


あなたのコードについて、達人はこう言いました!

あなたのバージョンでは、静的なdatetime newbarは ゼロで初期化されないので、これは不正確です。

 
Sepulca:

このような方が良い(EAを再起動した場合に備えて)。

IMHO - 注文を検索して、それがマーケットにあるかクローズしているか、そしてどのようにクローズしたか、テイク、ストップ、マニュアルで確認するのがよいでしょう。ここから違う方向へ踊り出す。

そうすれば、すべてが正確になります。そして、グローバル変数が 失われることも...。