[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 357

 
Zhunko:
コードを載せていただけませんか?擬似的なコードかもしれません。スタートしないとは......?C++のmain()のような基本的な関数です。

それは、あなたが解決しようとしているタスクに依存し、EAプログラムの本体であなたのコードの場所を決定します。誰もstart()関数のコードを保持することを義務付けてはいないのです!

start()関数は、このコードテンプレートであらかじめ定義されている3つの関数のうちの1つです。親プログラム - 端末プログラム(これはmain()、メイン)は、その主なタスクを実行し、サーバーから新鮮な引用を受信する(大体)ちょうどあなたの関数の開始を見て、その中にあるコードを実行するので、それは少なくとも存在するはずです、それだけで返す()場合は、開始関数はここで停止されます。

 
"Professional, don't pass by", :)経済 カレンダーやその他の有用なものが掲載されている、お気に入りの(できればロシア語の)ニュースリソースのリンクを共有してください。もし、ここに掲載できないようなリンクがあれば、PMで私に送ってください。
 
買いシグナルがあれば
売り注文を オープンチェック
あればクローズ
無ければ買いオープン

売りシグナルがあれば
買い注文をオープンチェック
あればクローズ
無ければ買いオープン
 
frxmax:
を書くのに役立つ。

買い気配がすれば
売りの注文を確認する
そうであれば
買い気配がなければ

売り物があれば
買いの未決済注文を確認する
イエスなら終了
信号がなければ買い再開


自分で書き始める - 私たちはあなたを支援します

以下は、https://book.mql4.com/ru/ のための出発点です。

 
abolk:


自分で書き始める - 私たちはあなたを支援します

はい、どうぞhttps://book.mql4.com/ru/

すでに「始めて」います。

total=OrdersTotal()。
if(CONDITIONで買い注文を出す)
if(total<1)
{
ticket=OrderSend(Symbol()、OP_BUY、Lot、Ask、3、Bid-StopLoss*ポイント、Bid+100*ポイント、"買い"、1111、0、緑)。
if(チケット<0)
{
Print("OrderSendはエラー#で失敗しました",GetLastError());
return(0)です。
}
}else
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
if(オーダータイプ()==OP_SELL)
OrderClose(NULL,Lot,Ask,3)。
return(0)です。
}
}

 
ほぼ正解!まずは確認してからセットアップしてください。
 
frxmax:
を書くのに役立つ。

買い気配がすれば
売りの注文を確認する
はいの場合、閉じる
シグナルがなければ、買い注文を出すこともあります。
//  в ф-ции старт 
  
if(....условие покупки....){
     if(CalculateOrders(Symbol(),OP_SELL)>0) Ord_Close(Symbol(),OP_SELL);
     Ticket(OP_BUY);      }

//-----------------------
int CalculateOrders(string simbol,int type)
  {
   int count=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==simbol)
        {
         if(OrderType()==type)  count++;
        
        }
     }
     
 return(count);
  }

//---------------------

void Ord_Close(string simb,int type) {  double price;
   
   if(type==OP_BUY)  price=MarketInfo(simb, MODE_BID); else
   if(type==OP_SELL) price=MarketInfo(simb, MODE_ASK);

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if( OrderSymbol()!=simb || OrderMagicNumber()!=mn) continue;
      //---- check order type 
      if(OrderType()==type)
        {  OrderClose(OrderTicket(),OrderLots(),price,3,White);   break;  }
        
        
     }   
     
     
 } 
//-----------------------------

int Ticket(int op){
      double pp = MarketInfo(Symbol(), MODE_POINT);
      double pBid = MarketInfo(Symbol(), MODE_BID);
      double pAsk = MarketInfo(Symbol(), MODE_ASK); 
      double open_price;
      double T;
      color col=NULL;
      int mn=0;
      
  if(op==0) {open_price=pAsk; col=Blue; T=pAsk+Take*pp;}
  if(op==1) {open_price=pBid; col=Red;  T=pBid-Take*pp;}
  int res=OrderSend(Symbol(),op,0.1,open_price,0,0,T,NULL,mn,0,col); 

   return(res);               }
 
KONDOR:

大変ありがとうございました。しかし、私は少し違うやり方をしたので、あなたのやり方は私には少し不明瞭です。

どうすれば売れるのか、説明してもらえませんか? ここは分からないことだらけです。

とても助かりました。

 
frxmax:

すべてを反転させて売ろうとしたが失敗。

130エラー です。- ストップがおかしいので、そこでどこに持っていくか?

現在では、各バーに対して注文が開かれますが、私は1つだけ必要です。


total=OrdersTotal()。

if(total<1)

など

 
KONDOR:


うーん、ゲームの深みにはまりましたね〜入札や変更のお願いなどなど、ありがとうございました)

ストッパーも整理しました。