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

 
私も時々思うのですが、なぜ開発者はこんな無意味なことをせずに、端末に「稼ぐ」「排出する」の2つのボタンを作れなかったのでしょうか?問題は一桁減るだろう。
 
Necron >>:

Добрый всем! В общем проблема следующего плана. Есть тс, по которой нужно открывать позицию тройным лотом, после чего каждый лот сопровождается отдельно(со своим TP, сигналом закрытия). Интересуют способы реализации. Мне на ум пришел такой способ: использовать три отложенника, запоминать их тикеты, а потом каждый отдельно выбирать и закрывать по своему условию. Есть ли какие-либо другие способы (или более удобные)?

PS. Поймите правильно, около месяца назад только своего первого советника на машках написал=)))))

各注文にコメント (「lot_1」、「lot_2」...) を設定し、コメントから注文を認識...

わかりにくい場合は、もっと詳しく書いてもいいのですが...。

 
StatBars >>:

установите каждому ордеру свой коммент("lot_1","lot_2"....), по коменту распознавайте ордера...

Если не понятно то пишите подробнее можно будет описать...

StatBarsさん、ありがとうございます。もう、マジシャンの選択でやり始めてしまったということです。オプションは以下のような感じでしょうか。(正直、あるEAに似たようなものがあったのを覚えていました =))では、どの選択肢が最も最適なのでしょうか。

if ( (OrderSymbol() == Symbol()) &&
(StringSubstr(OrderComment(),0,0) == "lot_1") )

 
Necron >>:

Спасибо, StatBars! Просто я уже начал делать с выбором по магику. Ваш вариант думаю так будет выглядеть? (признаюсь, вспомнил что в одном из советников было похожее =)) Тогда какой вариант наиболее оптимален?

if ( (OrderSymbol() == Symbol()) &&
(StringFind(OrderComment(),"lot_1") >= 0) )

少し修正しました。

私は通常、「私の」EAの注文を識別するためにマジックを使い、シンボルを使用します。

それ以外の情報はコメントに書きました。

後で注文をどうするか、また3つの注文が開けるかどうかが見えないので、これは何も最適とは言えませんね...。

 
chief2000 >>:



Будет срабатывать на каждом тике пока выполняется условие. Небось код для тещи переделываете? :)





本当にありがとうございました。コンパイルすると全て動作し、カチカチと音が鳴る。

義母はまだ来ていませんが、何かあれば...、このアイデアを取り入れます)))

 

申し訳ありません、質問があります。

デコンパイルについて調べているうちに、デコンパイルの曖昧さに行き着きました。

選択肢は、システムをクラッシュさせること。

またはデコンパイラをハングアップさせる。

 
StatBars >>:

Поправил немного.

Магик и символ обычно использую для идентификации "своих" ордеров эксперта.

Всю остальную информацию запихиваю в коммент.

Я бы не сказал что тут будет что-то оптимальнее, не видно же что Вы потом будуте делать с ордерами и может ли открыться ещё одна 3-ка ордеров....

ありがとうございました。Expert Advisor をお客様のバリアントに修正しました。この奇跡を完成させて、私の初めての(多かれ少なかれ)本格的な作品としてCode Baseにアップロードするつもりです!(笑)エキスパートアドバイザーのシステムはムテキと呼ばれるものですが、これに私が少し手を加えたものです(ポジション管理用)。少なくとも、これらのトレンドを構築する指標があることは良いことだと思います。)

ただ、もうひとつ疑問が湧いてきました。3つのポジションを同時に(または約1つの見積もりを)開くにはどうすればよいですか?正しいのか、それとも他の方法があるのか?ペンダントでは無理です=(( 小さな距離は時々無理です:(


if(b1==0 && !IsTradeContextBusy())
{
if(Low[0]<HHL_1 && Bid>=HHL_1 && trade_buy==true)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage*PointX,sl_b,BuyTarget1,"lot_1_buy",Magic,0,Lime);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("lot_1_buy order opened : ",OrderOpenPrice());
b1=1;
}
else Print("Error opening BUY order : ",GetLastError());

return(0);
}
}

 
// ищем самый последний закрытый ордер
for( i=OrdersHistoryTotal(); i>=0; i--){
  if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==16384){
        if(OrderCloseTime()!=0){
          if(OrderCloseTime()> time){
          time=OrderCloseTime();
          profit=OrderProfit();
          
            //мартин
            if( profit<=0) Lots=OrderLots()*2;
            //----
            
            
          }
        }
      }
    }
  }
}
//-----

この機能は、最後に決済されたロットを検索し、それが損失を出した場合、新しい取引を開始するためのそのロットは2倍されます。

実際には、取引の採算の良し悪しにかかわらず、新規取引ごとにロットが2倍になる。


Question:どうしたのですか?

 
Summer:

やり直した機能を思い出した。以下はそのコードです。Lots (in ordersend) =getLots(), koeff= ロット増加係数 (デフォルトは 2) 私のテストでは最大 10 ロットまで (0.1 から) でした=)))

double getLots() {

double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
int round;
if(minlot==0.01)round=2;
if(minlot==0.1) round=1;
double koeff=2;
double result=Lots;

int total = OrdersHistoryTotal();
double spread = MarketInfo(Symbol(), MODE_SPREAD);

for (int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderProfit() > 0)
{
result = Lots;

} else {
result = OrderLots() * koeff;

}
}
}
result = NormalizeDouble(result, round);
if (result > maxlot) {
result = maxlot;
}
if (result < minlot) {
result = minlot;
}
RefreshRates();
return(result);
}

 

関数の中にエラーがあるのですが、それが見つかりません。

コードを添付します。