[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 196

 
torah01:

買う


int start()

{
オーダーセンド(Symbol(),OP_BUYSTOP,0.01,Ask+20*Point,3,Bid)- 50*Point,Bid+50*Point);

return(0)です。
}

help please...

を-に変更しました。 そして、ストップとテイクを確認します。今、あなたはストップ=70+スプレッド、テイク=+30マイナススプレッドです。
 
TheXpert:
人前で異端を広めないでください。オタクは他所でやれ、いくらでもあるんだから...。

ありがとうございます、ちょうど相談しに来ていたんです。
 
NickXXX:

1.ここでは、ダブルは分と時間の足し算にしか使われていないのですが、基準点をHHに指定できるようにしましたMM(例:16. 23)です。

2.最後のページを見ると、もちろんdatetimeに関するものもありますが、全く同じではありません。単純に、最後に注文した時刻をHH.MM形式で出力している。



検索がうまくいかない。ページ190、投稿時間 2011.09.18 23:03
 
nemo811:

こんにちは。

コードの修正をお願いします。

以下の2行はいずれも不具合があります。

ありがとうございました。

プログラムそのもの。


if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)

MODE_HISTORY の方が分かりやすいと思います。

 
tara:

< 0.6、といったところでしょうか。割り算の余りは常に1より小さい :)

それはなぜか?)12を10で割った余り=2です。
NickXXX:

そういう変数がたくさんある場合はどうするのですか?

それは残念なことなのか、それともうまくいくのだろうか。

もう一つ小さな疑問なのですが、例えば条件を実行する間隔(例:16.00-16.03)を設定するとします。新しいティックの到着にもかかわらず、一度だけ実行するようにするにはどうしたらよいでしょうか?

それが効果的です。そして、一度だけ行うには、次のような追加のサービス変数を入力します。

bool flag=true;

int start()
{
  if (ваше уловие по времени && flag)
  {
    тра-та-та
    flag=false;
  }
}
 
Figar0:

それはなぜか?)12を10で割った余り=2です。

これなら大丈夫。そして、一回で済ませるには、こんな風にサービス変数を追加入力します。


ええ、ちょっと不具合があるんです :)
 
tara:


if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)

MODE_HISTORYの方が意味があると思います。

大賛成です。夜になると、頭の回転が鈍くなるんです。

しかし、この修正でも、int MAGIC;変数を再宣言すると、スクリプトの上記の不具合(マジック変数と数値の混同)が発生することに気づきました(まさにこのマジックが何らかの理由でロックされているのです)。int MAGIC; を削除すると(extern int MAGIC = 1; が残る)、すべてが正常に動作するようになります。

なぜ必要なのか、という論理的な問いかけint MAGICを取り除き、安心して生活することができます。BUT.

このコードをライブラリに入れる必要があります。しかし、int MAGICを定義しないと、エラーになります。

それが、私のやるべきことだと思っています。Expert Advisorですべて動作しますか?なぜ、このint MAGIC;?

下のスクリプトです。

extern int MAGIC = 1;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
int OrdTicket=OrdTicket_b();
  Alert (OrdTicket);

   
//----
   return(0);
  }
//+------------------------------------------------------------------+
int OrdTicket_b()
 {
  string SMB=Symbol();
  int OrdTicket;
  int i;
  for(i=0;i<OrdersTotal();i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            OrdTicket=OrderTicket();
           }  
         }  
       }          
     }
   }
  return(OrdTicket);
 
mt-4端末のメールサーバーの設定は、どのフォルダに保存されていますか?
 

同志よ、助けてくれ...。簡単なコードを書いたのですが、コンパイル時に括弧のバランスが崩れていると言われました。

考え方は非常にシンプルで、MACDが7分以内に0を上回った(または下回った)場合、ポジションを建てるというものです

//+------------------------------------------------------------------+
//| MACD ^^.mq4|||。
//| 著作権 © 2011, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright"著作権 © 2011, MetaQuotes Software Corp.
#プロパティリンク "http://www.metaquotes.net"

extern int TP = 100;
extern int TS = 100;
extern double lots = 0.1;
int slip = 3;
int Magic = 1;

//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0)です。
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0)です。
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
//----

int total,ticket; //totalとticketを宣言する。
int signal = signal_MACD(); // signal_MACD はシグナルに値を渡す
AnalyzeSignal(signal); //シグナルを解析する
int MACD[8] = {0,1,2,3,4,5,6,7}; //1次元のMACD配列を作成する。
MACD[0] = iMACD(シンボル(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,7)です。
MACD[1] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,6);
MACD[2] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,5);
MACD[3] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,4);
MACD[4] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,3);
MACD[5] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,2);
MACD[6] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,1);
MACD[7] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,0);

total = OrdersTotal(); //注文件数を合計します。

int signal_MACD() //calculate MACD signal
{
if(total<1) //オーダーが1より小さい場合、条件を検討する。
{
if(MACD[0]<0)(イフ)
{
if(MACD[1]>0)とする。
{
if(MACD[2]>0)とする。
{
{ if(MACD[3]>0)の場合
{
{ if(MACD[4]>0)の場合
{
{ if(MACD[5]>0)
{
{ if(MACD[6]>0)の場合
{
{ if(MACD[7]<0)(イフ)
{
return(-100)です。
}
}
}
}
}
}
}
}
if(MACD[0]>0)とする。
{
if(MACD[1]<0)(イフ)
{
if(MACD[2]<0)(イフ)
{
{ if(MACD[3]<0)(イフ)
{
{ if(MACD[4]<0)(イフ)
{
{ if(MACD[5]<0)(イフ)
{
{ if(MACD[6]<0)(イフ)
{
if(MACD[7]>0)とする。
{
return(100)です。
}
}
}
}
}
}
}
}
}
}

void AnalyzeSignal(int signal) (シグナル解析)
{
if(signal == 100)
{
ticket = OrderSend(Symbol(),OP_BUY,Ask,slip,Bid-TS*Point,Bid+TP*Point, "buy",Magic,0,Green);
if(チケット>0)
{
オーダーセレクト(ticket,SELECT_BY_TICKET;)
Print("opened for buy at price:" OrderOpenPrice());
}
さもなくば
{
Print("opened failed due to:" GetLastError());
return(0)です。
}
}
if(signal == -100)
{
ticket = OrderSend(Symbol(,OP_SELL,Bid,slip,Ask+TS*Point,Ask-TP*Point, "Sell",Magic,0,Green));
if(チケット>0)
{
OrderSelect(ticket,SELECT_BY_TICKET)です。
Print("opened for sale at price:" OrderOpenPrice());
}
さもなくば
{
Print("opened failed due to:" GetLastError());
return(0)です。
}
}
}

//----
return(0)です。
}
//+------------------------------------------------------------------+

 
p.s.どうしたらこんなに美しい台本が描けるのでしょうか?