0010101001010001010001110100100011101100011010010100000100000000100001100111011100000101111110000001001011001101101110010010001101000110011010101011110100111010001110110011110110010110010101011001001101001001110011110111110011111110001011101011001001000001010000101110001010011110110011111100101111111100001001000000111001110010001011001100101011101000101110011110101101111001101110010000000001001001 1001010000010111001010001100100011000111010001001011100001100000001001101000101000001011011000000111010011000000110100001110011100110100011001111001101110011010111110111111010101010101110001011111001100000001111000111100011100111001000010110001010001101101010110001000110010000100111010010011000011000000001010000110010010010100001111001000010101101001100111011001000001110011101110100011100001110101 1110111100000001001010010011110011001100000101100101010101001011000011001010010010100000011010000111100101111101011011101100010010000001001101101111101100001100010000111011101001011100000011100110000100101011011110000100100101111100001010111111010100101011011000001011000100110100000110100110110010000011100010110100101001011000100111100110000110000000111111101011000100001010110010100101111011011110 0111111111110010000100000100101100111000010001100010000101011111001110000011101000110010000001100001001000000010110011000001100001111000101101000011011111111010001000101010000111011010000011000000010011001000011101100001111000111010010100000001101011001110100100001110100010010100000110000110000001000010001110011110110011011010000000001011011011000000011111111011101000000001000000101010000011000011 0000010001001100010100100101011011111011100110100011101101111010011110101001100110000111001001001000000110010101011000001100011101011111011010000101100100011001000111111000001000111010100010011110101011001001101111001000000010010100101101101011000010100000110110011110001101001010010100000100110010011011100000110111010001111111111101101101111110100011000001111101000101001110110000110010010001000011 1001000100011000000000000001110000110000111001000100010001101110111100001010101101111011001011110100100001010010111001100011111110110100101000000111110011000100011001000011110000011100001101111000011000011010001100000111011101111100001111000111000010110100011110000001010101101100111011101110101110101111010111101101110010011010101100110101101010110101101011110111101111101111110110000111111100101100 1011100000011100010000101100100001011000111101011010000000000100100001001110001000101010101010011001000100101011100010100001101101111000100100100101110000101000011000101100010010110001101001000101100101001010000010100111111011110000110111101010000100111000000011100000100111010001100110010111011100011100110100000001001000001011011110101100110101001111000111101010000000111100001111101001110000011101 1111001010010100001010110011001010111011011111011001111011010101011010000110010110100011000001111110101001101111000100000101000010110111011011001010100010010011011001010010010111111101010111100010000010010110010001100110100100100101101010100110001001111111100011100000111100001101000000100001010101111110110101000011000011011011101010100110100111101110111001110011110011110111110111111001001111111111 1111111110110110101010101001011111000101100101111011001100100110101111000101001110100111110110010110000110110001100010111101000100111100011001011001011001110111100011001010000011000000010000111110011010110001010001001101011000111001001011111001111111110000100100101000101100101011111011000101011010001000011010010100010100111010011100000100110101111111011000001110011110000101110011110011110000011101 0111110101101110110011001110100000000010101110111100111111101110000111000000110010000110111111101000011001010010111001011110001101111010010101011111110000000011110101101101001101100001001100001001100100010100001100101000010011100001110110011011101000101010011010011101011111111110111000001010011100101001011001001111110010010010111110000101101011100011110111110100000010000001000101101001111110101011 0100111010001111110000011100001010101000010010110010100010010110001101110000010110101000000110010100001001100001000000110000000111111110001000110110011101110111000100011110010101100000010110010001100001111101011001100101101100011001101111111010110010001111010001111000100010001000000111001000101001110011100000110111110001100110100101000001101011100001001001001001011011010010111101001110010110001001 0101010001000010001101001111000001010101111011101000001011010100000001101001000010000111000010110101111110111000010101101010100111100111101000100111000100110110001101010001111001101110001001001011101110011011101101001111011011110100101111100110111101001010001000110100100011010111111110100010110010111100100100001111000110101000010111110010111100110010001011000001111101100101010001011111101101111100 1001111111001011101110100001001111011101010011001001100110100100010111101100100111010110100110111000111000001000000101110001111100000101010011010000101000010101011110110111011000111001110110111001111000011010110001101001111110000101100001110101001110000011010001011011010010001001101111010100000000101110010000010011001111110100100001000111101000100101001001000011110101011000010110010001001100110111 0101111011100111110010111010100001011110110110111111001111111110100101011010011010010010100100000010000100000011001111110011001001111110000101000111111001111010110100001101100010010110100010011001100101010101000011010011111100011011110010000101001010001110110001110101110101001001011100000001010011100110001010001110111010011100000111011101010011010011001100100011110000010001101110001111010101101011 0100001010101111000010110110100100001101100000001111000100001010110010010011111010100000001000000100101010000010010011111101001011001111010101111101000110100111110101001110010011110000111101101010101110100101001000101100011110110010011111110011110100000001011011111110101000100100000110001100000011001001010001001100100101110011101101011000110011000101100110010101100010000011001110111100010001011010 1100101101100110000001011000000101011000101100110110111010100011111110001100110110111100010111101011100111010110100100001000000010000010011011101001000001110111010010110110010111011001001011011111100101011000011001000000111010010010101001100000001010010110111101110101110001100000011001101100011100101010111010111011010101010110010111100011010010000101100101110011011011100100000110101110101101011011 1101111000010011101111101110010001101011110010010010111110000100111000001001100110110110001010011001101001010001100110001110101011000010110011110101101001110011001010101100100010101011101001110110111011001010110000101010111000011000000111010000100001100001010101001100110011111110010011101010001101111100000011000100100111010100011011000110000001100111111000000111000111000111101000010110000011100000 0010100111000010010100001100100000101011101110011101101111110001111010010101011000001010111011001101011111110101110100100101000001111001111000100010001110110011011100001001111110010110100000010011010110111101111110000011101001100010011101111111001110010010010111001000000101100101011011001101010100010101110010110010001110001110010000100100001011010011011111111111000111011010000100011111100110111000 0111010111010111100100101000111001001011010010101010000100100011100010000011011011101111010101110000110111010010000111100010111000110011111100100110100000011010000010110011101100111000011011001010000000000110000101101000010110111010110001000000010101100101000010011111010110110000101101001010011100110111111000000000000011001101111010110010100101001000000010101100010110111000101111011010000001101101 0101100011011001010111101101101110110110001110111101101100011110100111111001001011110000011000011011011100010101000110110101101000011110110110110100010101010101110111111011011010000101101000001110001100010010011001001101010010000000001100000010110101111011111001100000000110011111000101011000010101010100001011010000110101010101111010011011111011011111000000101111000010000000100010001110101001100111 1010001010101101111010001111100011100000011101010001011010010100011010001000001011011001101001001110000001011101101000010111011111100101010000100111110110001001000101010001001110100000110010000100001100110111100100000111011110011000001010100101000010100011011111101100101101001001010010011111000100110110100010001101011000011010000110111000101111111100111011011110011001110001101011011100001011011001 1001000111011110001101000011011101000001111001000011101011111010111111010000101001011101111011010000100101001110010100111010010001110101010011001101010001100010101001000101110000111011011111111000000000101110110100111100010010010111110010110111101101100000101001100111111000101010101111100001001010001000000011010010001000010100001011010011001111111101011011101001111010010011110000000100101111000001 1000110101001111111111011110011001001100011011010100000110110101000111010110110100110000001110111011100100111110111000000011110010000010000001001111100100111110001110011010101101110010010010001100001000101101011100100011000101110100101000100111101111000100010011111010001000100000110000011010010110101110010001011001110000100110001111000100000000101100010011101010011000000001010000010110100010000100 0001001110101011111001010001101011111111011110001001100101011111111110000110011000101000110011101001111101000010011100110101100010101001111110100011000010000000111011101000101000011100011011001011010101001101010110111111110111110011010001000111100100110110000111111000000011001110011101000010010111111001101011000001011010100101001010010110100111111000000010100101101001001010011100000101000001110101 0000101001101001110010011111010000001000010110011110010110001100111101010001011000111000100001101000111000011000100101000100000111000111110010100001100110100010000001111111110011101011001010001011101000110001111100000010101110010101001100111010101000001011010001000100000111100001011001111000111001010010100111111010000011100001010001111011011001100100110111111110011010110101000101011011101111000001 1111000011000100011010110101000001101001000010100000010100011101111111000000001100101000011010101010001001000000111111100110100011101101001110100010110101110001101100110010011101001010101110000010011010100110100001010111011101001100111101110111110101110010100000100010101101110001010010110110000001011001111000110100100001101110101100111000111001001101011011110100111111001000010000110100000010011000 0010111011010010010011100010010000110000111010100010000011100101101001101110111101010101110000001001101010000101001011010101110010110011001001111101001000000000000001001010011011011010011100110000110010110010010000110010010111100100100100101101101000111011100100000000001110001001101011010001101010000000101110100100111011011100000101100100011001110100110111010101110100011001011010011000110111010100 1011101100101101110101010111001001111111100110110100010001111101111101010110111011010010000001110000101101101101110011110010000101101111100000110010000011101101000010001110110000100010011000111000000101011110111011000100110000101100101000100010011101101011001111011100001110011100001101110011110111010001110111011101100101001101110101011100111100101100101110001011011001010001000100000101011001101011 1100100000010000101001110011100010001010011001111000111111000011101111100010111111000101111110001001011010000110101100101100001110111010001110101010101100010100111011100010010101101001101010001001011110001010101001111101101100110000011010010111111111111001000001111101110101100100011000010000100111101111000011110101010010111011110111010101100010000110011100000010100000111010100010101110001000011111 0011101011111010100011000011110010010110010000010110100000110100000010010101100111101011100011010000000011100100111000110001011111011001111001111001100010111000111111111011100101101001011001101100101111011000001111011110111011110000010001000000010111001011111111010000110111101100110000011001101110111010101100001001110001111100101101100100110100110000001010110111110111001011001011001111101111101001 0111011100100001111010100100100000100111001010110111100001000100101010000011010110111010101011101101001110101011010110001011001100001000101100001111101111110000101110100110101011011111010011000010001010111111010011001101011000001110100000001101011001010011010101111110011000001000101001101110100011111011010011111001111000011010010001100110100110000011011001000100100101001110011111001000001010110101 1100111011010110101011101010110111110110000001111010001110111110010111100111110110010000101101110100100001101011100001001011110110111010000101010100110010001110110000011111111101010110011111100011011100001111111100001111011010011101110001100100101010101111111001011101111101001101000011111100111100100010010001010011001000101011001111110010010110010101001110001101000111000110111011010101111110001111 1101000010001011111100111110001110110110101100010001010101111100100111100010110110000011110010010100011000000001000101101010001001011111011000000000001011110101011100011010011000010101100001001001010011010000010011011110110100001011100010011100010110111100000010000101001101110100101011010010010011110101111111110010111001101100110111110111000101111110000000101100011100100101000100100010001100100100 0001110110101000011010110011100010011101000010111101001010101011111000000110010111101001011110100110001001110100010110011110001100001100011000000111111101010100001101111111100100011110011011111110001110000000001001000111100000000011000000010011001011110111001000010000010011000001001010001000010010011110011110100001101100000100101001101010101011100000100101001101101111000010001001010010110011101000 0111001010100001110011011000001011001010111010010011100110110001010011110011101010101101000001000100001110101010010110101000001011011111101101101011111001100010100011010000100001011001010000101001011101000011001110110011110101101001101110000010100000111101010110010011001101000011100001101010101001100010001100010001011101011101100000100000111001000110010000111110010101010101110101110101101100011001 0101000000101001111100001110011101011001110100110100110100011000111000000010011101110011111111011110000110000110000010110110000010000011100010101010011010011000000110010010001010000010110000011010101101010101100101101111001010110110101111101000011001000101010001010011010100100110100010110100100101110011110010010000110110100010111011011000100110111110110100111110110111110111100010001000010100000111 0110001000100100001111001001000101000011101010001000100000101001100101101100001110111100100110010000010000101011010101111111000110110111011100001010110010011101010110100010001010111100101110011000110010000011010000101101011110101100111100011101011101110100111001110011111110101111001110100110010110011000001011101000110000001011001111110011010101000101011110011010001110011111010100100100100100111001 0111010010101100000011110011011010100010010001000100000111101001011001001100000100010000001110100100101011101111101010101111101000011011001101101111111001100001010111101101100110010011110110100101110011010110110101010011001110100000110001011100100101000100011111111000110110010110110110010000110111010000010001000100111001011011001010100010001100111101010111000100011100101110110011101010111001111111 0110101111101101100101010001111001101101011010100101110001010000100011001010111000111000010001011000000110100110011110000101001101100000000010001010111100001100100110010110000001001011110010110000001101010011000011101110010101100110110000011100100000111110110011010110100011010010111011010110010001010011100010010111111101100001110011111110010011000111011100010011111001111111001011010001001011011110 1011011010011010110101001010110011001001111010000110101111101101111100011011000011110110000010000110100000010010101001011000110101110110110010011001100100101110001111000011100101001100111011110011111111110001000011001101100011010010100011010111100111010111010110001010100010011110110011001111001000100100010010001001000001100000011010111001011011111001000110001001111001101011000011100100100110110100 0010001001111101111110101101000111011100011100001100001001010110100110011001001111101111011111000011010011110000000000010110000001100001011001010011000110010110000010001100011010101011010110110001111100001110111011110111101011011010000001011100010101011101011101001011110001010100111000011110010101011011111011011000011110110011010001111110011111011000111011101100110110011110011000001100111111110010 0010010100010110000011101110101110000011100111101111011110000010010101000010110110001000010010011001110100100001101001111110001011110101101010110110100011000000000000010011101001101000111001010011110111111000111111000101011010111100001111011001011100000010001011100011110000000110101101100000110000010000011011110010000100111011011101101110101101001110011000111100000011000101101010111011011011011110 1001101001100001110011100001100111000011100111100010010000110111011001000111101101000010111111100110000011000111101100011111110101101011011011011001000010111011000100110110110011010001001010001000010110011111000110001010011001011100100110000000010000001000100010100000110000111100111001101000100101100111001001101011100101010110000001111001000010111111010101110111111110000101001010110011101111100011 0011001110111000111110111100101110011000000100001111000111000110011110100011001101111001010110111101100010100000111000000011100000010001001000001101111100111000101000001110000100110000001100100000110010010110010100100011111101010001011110100110101110010110010000010001111010110010001101001001010110001010100010100010100100000011010110010110011000011100000001100010010110011101110001010100111000101111 0000000100100111100100000111111001110100100001000101110101011110001101101010000010111001011110100000000001110100100001000110111011010010010001101001101100101010110111001100101001010101010010011111111101110111001001011111111010010111001101110011100001011011011101011100101110001011111010100111000101010111101101111111011010111001110000110011010100010100000001110100100101100101111101111111001100100001 1110000001011011100111011110001100110011111001011111110000001111110100101000100000011000010110111001011101101110001110011110001001000100010110101010000001010010101110011011010101111101100110011100000101000101111101010110111001110001111001000100011111001010110100000011000010100011001000101111110111100001101111011101001100100000110001001110110101000100100110001101101010110000001110001100001011000011 1111001001110000001101110011000111100111100101111011100100111011011101100111011000110011011001100011000000001100110011001011001000111001100001000100111011010010001111010101000100101111101111000110011110010000010110001100100110010000011110101111000100110100010001110011000001000000010111111010000110001101011010010001100101011010101001010100100111000110110100010110011101111111010100010001101010100000 0101010010011000010100110000011100001001111110111001111111101100110001000011010010101001111111001010000101011111010101011011000111111100101101010010001110111011010000110110010010011100010001111111001011011100001111110101011111101101001000100010101111011000101110111110011110111100111111011101000011010111001001011111110101010000000000100110001011111011010010000101000111001001111110011001101001111111 0001001101000101111101010110100001110011010101000111011000010000010001000001111011101100110101110110110000101010100111001000101110010111100101001001111001111101001101100101001000010110000101011100000000001000100000011100100100110001111100110011010111110010110110111011101010011111010101110000010110100010010111110001010011011000110110001110111010110001110001001000001101011010101011100100000011000001 0010110010000011100001010100000101010010011100110011000000111011101011010101000001111111110010010001101101101111111010101000011010001000010110000100001011110111010101101100101000110001111110011010110000100001000001000101001111011101001011100001000110001000010111110010010011101001010010000000100100111100111001111100000000111000000100110100010100000110100110011111001110101010010101110011010101110001 0011100000101000001000000011000110111110011101011010100010011000011011000001000001011001011010010101000001000111101001010110010000111110010101111000011010111011101111000011000110001101001111111111110111110101000100001010000100101000110101111010111111010000110111001011110000111001101101101100101011101010111001011110010011111000011100000001010100000100110111101110111001100010101100101000010010000101 1000101100101101010000001010101111100100111111001101101100010110101100000101011111001011011101011100010011100110010000011110010000000111001100100001000110000100011000000010110110011100101010000100000101010010001001100000000101001001001000101011111011000100110000011111011101101010100100101111111100111001101000001100000001001111110110011101010010010000011100110110110000001000011111101000000100100010 0111010110001011010011010111111001011101111000010111000011111000001110011100100100011000011010000111011010000110100001111000000011110011010000001001110011000011010010100011011101011010100111111001010110001010100011101001010101111011001111110111111000100111000101100101100101110000111010001110100001001101111100110010111010110101111110101111111110111001101001100101100001101001000011100110111010000101 1001010100011111101000110010001010010100111111110100011011111010011000001010000000110111100110001110111011001001110101111001000001100100110110000010010001100110010000001110111010001000101101011000110011100110101001000101011110011001110010011000110010110001110000011110001000111100110000010011100101010110101100011001111100000100111100101001100111001101110001101011000100101011001011100011010101101001 0101001011111001111111001100000000001110111111011011010110110010111001011001011010101010010111111110010101000010101100101000000000000101010011100011110111111011110010101110011010010010001001101001011011111010111001010100001011100100001001110110011000001101100010000000111000110010101101100101110110010111000011101010000011111000110100100101011111110010011000101001000000101000000011011101111010111010 1110011000000000111000100001101001111001001011100011101010011010000000000110101011001101101001010101000001101111000010010111011100010111110011110111110101111000011010110101001100101001001011100110000111001111111010001010101110001011110110100000110101011010100111111111001110111000100010010011011000011111001110011010000000101010000111000000101001001000001000010111100010100011000101111100000110001101 0110100110000000010010000100111011111000100111001110001000011110010000100110101110000010100111001100111001001001110010111011111010111010000010000011011110011001000110111111000110011001111110111101111101010100001100101101111011111110010101111101101010110001110001000100110010011010011011110001110000110100111111101101100101000110110010110010010101100010010010000010111001010010111110110110110100101010 0110110100010111010111100010110110011010010010001010001100001011000001100110111000001110101100110001100010010000111101111111101010100100000001101000111000010110010110010100000011001101001100100011101011000011000100011110111100110011010001100110001110101111000010100010011011111100001111101101011100111110000001011111010000001011001011111100001111110100010011101110110100000010100001010101101111011001 0101000001100001001100001010010100101110000100010011011000000010111101101111010110110000100000000111001011111011000111110110100010111110110010111000101111100000000111001011010101001101110111000110011010000110110110001010011111000110101100010101001100010001101010010111110011100000111111100110100100010100011001001010101011011111001110100101110001100011011111111111111100011000000001000111000100000010 1100110111111011101110001011100100010000111101101101000001000001010000000011000010010001000000111111101111110110111110011100001100100011100000100110111101110100011101001000000000100110001100111110100110001001100001110000110001101100000110001010110010010100110111100100101001100100001011101111001101011100001001101001001101000001100101111011110001111110000111000010100110100011000110100001011111100110 1110111011110011100101111010101001100000011011111111011110000101111010111101010111110111010011110001001010000011100010010000010111101100100011001011110011001100101011001011101011001000000001001100000000101101111011000110001110100100011100011101001000110100110110101111011111001010101000011110001011000100010010101011111011001000000100010001111001111111010111011001101001000001100000100101110000111010 0000011100000010110100001010001101111101011101001000011010001001010101110111100001010100110111101010101110001011010000000011110000111000111100001000110100101101111110100100010001001010101000011011011001111101111110010011001110010000010001110101111011111001000011000101101010000111000101101010110101101111010110011010001111000100011110000100101101001111011001001000110011011001101111111010111011010010 0010010100001001010001110011101101101111100000000001101010010000110000001001010010001100001100111010001100001011010100001010011100101001100011101010111101100101010001000001110000001001011101101101010001100110011101110011101011010001001111111010011111100100111100111010011111011111101011001110110001001100001001001010001101110001011101110100010110110011001001111111001001110000110000010011001000111100 0001000011101010001010010111000011011110100110010001100100111110010011010101011111010000010000001011100110100111001010111001111010101000000100000111001100110110010110011001101000010010011100101111000001100001000001101111100011000011011110011111101100001010100001111010100000010100100111101111000100000100100111100010101110000000010011111110001010011001101110100001101100101110000010110111101011110011 0101001101001011111100111100101011010000001100100011101111110010001000000101110010001100110110101010011111010001010011011100011101001010101111110110011100011001001110110010100010100110101101001001101110001010010010100001011101000101001000011011011111010010110111110111010101010000101000101110000110011001001010011100101001111001111111011011101111110101010000101001001111001100010010000001111111111000 0100001001110101100111101100110010000011101111011001100010001001101100011000010010001010101110101011101111110111100011100101010111010000111001110111110011100001100000000001000111110110101000110110010110010111000101011000101001001101111110010111100011111111100010000100000001000011101100000100001101001001001110010100101010011010000011111011100000111001110000100110011011011010010101001010001000011111 1011001010010000010111110010011001111100111100111111100100001010001111110011101001110010000110111110001100101101111101001100000111001010111100001110101010001100110101011110100101110011010011000000111100110100101110101110010110101101001011001000010100110111001010011111101011001101001111101001110011101111100110001010110000100000100001011100111000111100101010001101011100011101100110001101111111100110 0000100000101011000100100010101011001011110100011111010000100101101101101011010101000011100101001101100010101000001100011010011000000000101010101001001000100111001010100111100110100010001000000110010000000011000100001010111100000011010000100011011110011110110110010111000000001001111010100111100100111100111010111110011010011110100100110010101010111011100000101101100001000011001000000011001101000111 0000110011111011110110111001001111110010000111101001110000011000101110110001111010010000100011001010110000010010010110111100110110001001011001100011011011101011001010000110111101101101110101001011111100100001101010011011000010110100011101011100010001010101101010101111010010111000011111101011101100101101101010101101111101111000000011100001100101111001101011001001000011011110000111000111000000110011 0110111000110000011110000001001011010111010011101000100111110000101001100100000010101011001010001000100010000011111001101001101011101010000111010011100000010001100101001101001110110111100011100110100011011111001010111000011100011101100110010000011010101001001110110100100001101100111110001100100110010000110101001110000000100000110100100111101001000110010111101001111001010011001011110101111100000110 0111101100000110001111001000010001100000100000111001111111111100011100111110101111011010000011010001111110111011100100110011010010101001111010010001010001010010110010011001000011000100110110101011100001110011010100110101001111100010110111001000001000100000000111001110111100010101010100100000100010000011110001110001110011010100111000101010101000001011001101101100110001010010011101101111000011100001 0010100001001110100001100011101000100011011011011101100110100000010110010111100000000110110110011100001110010110111000011010111000111001000001000001001100010010101101101111001110000101101000100010110000000111001101111001001101000101001111011001001010000011100010110100100101110011010010101011001000001101010001110101001000111111011010101110011001000100111000110001110011101001101110110001001110101001 1000011101110110001010001011111100011010001010000101111010110111111001001001001110110001101010111110000100010010010110111111000010011111001111101111111000110100100110101001111011000100101010101010111101010101001111001110110110100100010101110011100011000101101111110011001001110010110110110000101100011011111111000100010010001001011010001100010001111101010101101100101010101000011101101010000000110001 1001101101110010101000010000001010010110111011000010110011011000010010110100111101001001110110000011000111100110110101101010111010000010111010101100011011011011110101100101100010111101011110101101101010101100110100010010010111110010010011000101011110101001101100110011000101001100000001100101111110111001111010100110001011000011010100111100101011111000111001110010000001010100100101110111111100001100 0011101110000001101111010010110000110100101001011111010010100011101010100011110010010110011001010001100100101001110111101001000100101100100010110110100110111101001001010111001101100010111110111101101010100111000110111101111110111101001010111000101100000110010101010001001110101110001110111011111011110110101010011100011100011110010111101010100100110110111100010100010000011011010101001010001011100111 1110100010011000110001100111101001001110100011100001111100010011110100011011101100000100001011111100100111000010111011110100110111000001101011010000011011111011001101111001100100100010011110111101001110001111011110010010001011000101101011101100100100101110100011110100111001110101101001001101000100110001001100001000110110110110100000110001001010101100000101011110111000100001001110101100101000110001 1011010110001010101010001010101001110100101011110100110000001001001011111100000110001000111111101011001100011110101001110101000010010111011000010001011100100100010000011001110111101001110101100011001101111010111000011011111001101010101001100010111010110111101100101100001011101000110101000101101101100011010110101100011011010101111001110011111001001111101010111001101010001100010101100101001011000010 0101001010010001000111111011011010010011010000011001010001000100011001000001101010010001000110001100011010001011110100101111000101001110111100011001100010101110011110001010010011010110010111100111101100110111111001001110100110001010110010101011010001001000001000000101100011100001011110010000010101100100010100110101111001101000101010101000011100000110110011110101110110111110001000011111001100000100 0100110110111100010010010001110001110100010100010010100000010110010111011100111000100111111111011001100010101110010101110100100010011111101101001000010111100110001001100001101010001001011011000011111100111001100110001000101000001111111110011110010001100101101100110101111100011101100100000011111111001111100110010001001001100101001110110111101010011101110111111011010111010100000001011001001011100100 0000011100000011101111110110010110001000011001000000010100100101100001101100001100111111001110000110100001011010001100100001100001111010111000101101101010100110111101100100000111000101110001010111110010111010100000111101101000001001011011110001010011100110101001011001101000010100110100011100111010100010110001101011010001111100111101000111001011100000000011010011001010000010010011110011000011100111 0001000000101111011010001101101010001111110001001011111000011110010001000101011010111010110111110111010111010111100111100101100111011001111010111101101100111100001010000001011100001111111000001001000101110010000000011000110011000100101111111101100100111010111110010111101010001011111010111000101010100111001101101001010010110000001110011011011001110010100000011101100011111000101100001001101001110011 0000000110101000001110101011111011101010101111000100100010010101011111000110000011110010010111001100000111101011000101000010101110110100111011110001101110011010000110001111011110111001110111111110111110010100110110000001011011010111100000000101100000011101110001110100001100001100011101001000101010001110100111010110010100111101011110101111110000000001100101111101101011001011101101100001110110010010 1100101100101011010110011110110110100101111010000111111000101000100100011011010111110001000011011001011110000111100010111001111110000111100110100100001011110101110000110011110010010001010001111111001000011110110100000001001011111011111110110110000100101101110011101001101011010000000111110100111110110011011101000001110111110110100111101010100100100001101010011010100001010111100110000111010110001100 0010010100010000010011011110010101100111011111001011011001111010001100100000111111110100101111101111111001110001111001110101111101100000110011011011011001000000101111110111011001111011010011000101110101110001101001001111111000101011110011000101010110011010010101001010011001100011011011001100011110011011001011001111010001010011000000000100110101100111101000110111011101011010101000101000010010111111 0010101101001110011011011001010011101001010000000110001100001010101011111011100100000100100011001011000100101110111110000011111001011101001101110110000010000101111111010001100110001010110101101111010000100000000011100110111001110000111111011110001000101100011100011000110010001001101110100100011111001111010101101100101001101111111010110110000001110011111010101100001101000111011100100110011111000000 1101101100110110011000111001110110000000110011011010101011100100011010011011001100000001101011110110101111101111111010110110110011001000101000110101011110010000100110011000010111111100011001111010110010110111000111000001011110110001110000110000000000100100111101001101011010010101110010101110100011100110110011011000011011010010101010101101100010101011011101010101000110000110000100101011000010110110 1010101010111001010001010110111010101110111000010001100101010010011110110011001000110010101001010000100010001001100011111000111001000110100000000100011001100000100101011101111000110101110101100110101100100011000110110001011111101111011101011001111101100010100001011110001010100101100101001000001111000001111000011010001011011101011101011011101001000100100000101100001001001000000001110100111000111111 1111001010111000100101010101011010010000011101011110110011101111011000010111101001011100101011011101101010111111111111000100000111100110001011100001000000000001010101110001111110101010111100101010001001100001011110100111010010111010100100101011000000110111110000010001011011101000101010101101000011101100000000100010101001110100110110010110111010010111000011001101100001101110100001000001000011010000 1011000011011001000000000011101001110111011011001001111111000100101011100111001000000100100011101011001011110001010001111001111111011101101110101010100000001110011000001001010010000010011010101001111000011010010111110000000000001111001111111111101111000111110111100011000100010100001111101000101101101101010100101100001111100001111100101000011110000011110111101001000010010110000100100000011000110000 0000111101001010011100100100100111011100011000001011111110110011111110000001110100110001111000100111001111110011100001001011000111100100011010101101011001010111000101011111001111111101010000000110110010010101010100111001000011011010001100011110101011011000100001111110010000100100101100001101100001110010110101001111111101111000111001001010001001101111010111000000110011000001010100101101001001111011 0100010000010000111100111100101101000011001001100010110010111101101010001000011000101010110010010001010001111110101000010001000010111010101111001111001111100101000011011101010001101001011000010100000110010001001010010100100011010101101100000111111110110100011101101101100011100010010010001011011101010100011100000111000110111100001110110010111111100101101011110010010011000000000110100110011101110010 0010110010001010111000011011011000011111011111010100001001101100010010000001000000001100010100011010100001001001101010000001100000001010011010110010111110100101001010010011000001100111000001000101101111101110001111101111010000110011111001000000001000110111000000110100100100101111101101000011001000101100111011110000011100100101011111011010111000111111010110001111101110001000111110110111110010001110 0000111010010000000010110010110001011111000011110101011110101000100000110101101010011000100000000010011111011101011010111001000110011110000011100111110011010011000000101101110110011001101111000101011110101000001111100001001001010000011101000100111110101011000110101111001100101010000001000100101010100111010110100001000110110010000101011101101011011001010010010111011011111011001010110111100111111100 0010110111011000001101011101001110011100101110011000111110000100110001111101000100010100100111100111110010010110001011000011110001110110000111001011001000011100011000101011110000101011000110001110000000100010010011011001001001001010101001110011000110100101010100011100001001011010110110101110110100010001100111000110000101011001001000100000111000010100000101100101111011001010011010000011010000011000 1001111100010101110100110010100001111001101011011111011100011010010000110111101111010101110110001101101111101001001011011011111011010101110010101001001000110001001011110011010101010011100010110001001011100111010001000111110001111011010011010110101010001011010000111111000010111000011001010100111000011000000100101001000000010011010111101111110010101101100000000010111100110100011110011111100110111101 0010100110110101101000100010111110101000001000011101101010010001101111001100100010100111101100011100111001111100100011011101101000101110110100110101001010011110111111110011011011101110000111000110010000110111011010110000010000101100000011001100111111111001111110111000110101001010110110111111101000100101110101010110101010111010101011101000101101000000010111010111000110011100001100101001111101100001 0111100000101001001001111110010000111001110111110101100110011111100110110010100101000000110110100101101000101011001000000110001011001111010111000000001011111111110101111100101001000101011001111000111000000100110110110100011111110110101101010011001110110010110111011011100010101011010001001000011100011000000111011010000111010101100100010011100000100011010000011100110001000111101111001010010110110101 0110000000111001011110101111011111101011011001011010000001011001001011001110110111011100011001100001111110101111000000001110010101110000011110011010000101000111111011001010110001010100010110000110100100111010110011110110101110111011110110101111111011110000010000110010001001000100010000011111010001100001110000100100001110100100100001111111000001111001000100010100111011011111000011100111111001110100 1111000001101111010101111000110010000001110111010010001101111111100110110111010010100101001010111110010000001011001001100011011101001000010110001100001111100011100110001010011011001110110110110001101000011010110001111001000000010111001110011001000000101001110100110011111101000000110011011101100101000001011000111000001011001000101010010001110101001010111010001000011111010011010000110110001001011001 1001001001000010101010111010111000100100001101001100111101111110111100000100100010010110111001000111010000011111110111110100100011001100100000010101111000111001011101000011100010001101000100110011101111100000010010101011011110111010110101001011110101111100010110010101011101010001100110100110110110011111100111001111001111000100001101010101110101101000100001100010111000101111100001010001000100001001
cTrader Algo

Symbol【cAlgo API】

10/27/2020 1/28/2023

5年以上前の記事です。内容が古くなっている可能性があります。

通貨ペア情報取得用

Robotクラス(本体)が持つプロパティSymbolから様々な通貨ペアの情報が取得できます。SymbolのインターフェースはSymbolInfoインターフェースを継承しています。

 

SymbolInfoインターフェース

通貨ペアの基本情報を参照するためのインターフェースです。

public interface SymbolInfo

関連するインターフェース:Symbol

 

プロパティ
(string) Name

通貨ペアの名前を取得します。”EURUSD”とか。これをそのまま発注などに使用します。

(int) Digits

価格の小数点以下の桁数を取得します。

(double) PipSize

1pipあたりの価格を取得します。

(double) PipValue

1pipあたりの価格を口座通貨額に換算して取得します。

(double) TickSize

値動きの最小幅を取得します。

(double) TickValue

値動きの最小幅を口座通貨額に換算して取得します。

(double) VolumeInUnitsMax

最大発注通貨量を取得します。

(double) VolumeInUnitsMin

最小発注通貨量を取得します。

(double) VolumeInUnitsStep

発注通貨量の最小増減幅を取得します。

(IReadOnlyList<LeverageTier>) DynamicLeverage

通貨ペアの通貨量別のレバレッジを取得します。

(double) LotSize

1ロット当たりの通貨量を取得します。

(MarketHours) MarketHours

マーケットが開いてる時間を取得します。FXだけなら気にしなくていいです。

(string) Description

通貨の説明を取得します。EURUSDなら”Euro vs US Dollar”とかになります。

(long) Id

IDを取得します。使いません。

 

(以下はcTrader4.5で追加)

(double) Commission

トレード時の片道手数料を取得します。(単位はCommisionType次第)

(SymbolCommissionType)  CommissionType

手数料タイプを取得します。

(double) SwapLong

買いポジション保有時のスワップ金額を取得します。

(double) SwapShort

売りポジション保有時のスワップ金額を取得します。

(DayOfWeek?) Swap3DaysRollOver

スワップ3倍付の曜日を取得します。

(double) MinStopLossDistance

最小のストップロス距離を取得します。(MT4で「ストップレベル」と呼ばれてるやつです)

(double) MinTakeProfitDistance

最小のテイクプロフィット距離を取得します。

(SymbolMinDistanceType) MinDistanceType

上記Min~Disanceの単位を取得します。PipsもしくはPercentageを返します。

(Asset) BaseAsset

通貨ペアのベース通貨を取得します。(EURUSDならEURの部分)

(Asset) QuoteAsset

通貨ペアの決済通貨を取得します。(EURUSDならUSDの部分)

(double) MinCommission

最低手数料を取得します。単位はMinCommissionAssetによります。

(SymbolMinCommissionType) MinCommissionType

最低手数料の単位を取得します。AssetもしくはQuoteAssetを返します。Assetなら単位は口座通貨、QuoteAssetなら単位は決済通貨(EURGBPならポンド)になります。

(bool) IsTradingEnable

通貨ペアがトレード可能かどうかを取得します。

(SymbolTradingMode) TradingMode

通貨ペアのトレードモードを返します。FullAccess(トレード可能)か、CloseOnly(決済のみ可能)か、DisabledWithPendingOrderExecution(待機注文のみ執行可能)か、FullyDisabled(トレード不可)のいずれかを返します。

(int) GracePeriod

スワップフリー口座でポジションを取得してから手数料がかからない日数を取得します。

(double) AdministrativeCharge

スワップフリー口座でポジション維持にかかる手数料を取得します。

(DayOfWeek?) AdministrativeCharge3DaysRollOver

スワップフリー口座でポジション維持にかかる手数料が3倍になる曜日を取得します。

(double)PnLConversionFeeRate

Gets the symbol profit and loss conversion fee rate… だそうです。(意味わからん)

 

 

 

メソッド
(double) NormalizeVolumeInUnits(double volume[, RoundingMode roundingMode])

volumeを発注可能な量に調整して返します。例えばvolumeに12345を渡すと、(VolumeInUnitsStepが1000なら)12000が返ってきます。最低でもVolumeInUnitsMinが返りますので0やマイナスの値渡しても大丈夫です。

逆に言えばVolume計算値がマイナスだったときは発注しないような想定のプログラムだった場合でもこのメソッド通したら発注できてしまうので注意が必要です。defaultはToNearest。

(double) QuantityToVolumeInUnits(double quantity)

ロット数を通貨量に変換します。quantitiy*LotSizeが返ってきます。

(double) VolumeInUnitsToQuantity(double volume)

通貨量をロット数に変換します。volume/LotSizeが返ってきます。

(double) GetEstimatedMargin(TradeType tradeType, double volume)

(cTrader4.5以降) トレード方向と数量から必要証拠金料を取得します。 

(double) AmountRisked(double volume, double stopLossInPIps)

(cTrader4.6以降) 指定ボリュームで指定Pipsにストップを置く場合の損失額を返します。当然決済時の為替レートによっても変わるため、あくまで目安です。

 

LeverageTierインターフェース

SymbolInfoDynamicLeverageの要素です。発注量によって異なる最大レバレッジを参照します。

public interface LeverageTier

 

プロパティ
(double) Leverage

最大レバレッジを取得します。

(double)Volume

Leverageが有効な最大通貨量を取得します。(DynamicLeverageの最後の要素だけ扱いが違うかも?)

 

サンプルコード
Print("この口座の最大レバレッジは{0}倍", Account.PreciseLeverage);
Print("最大発注数は{0}通貨", Symbol.VolumeInUnitsMax);
Print("{0}の通貨量別レバレッジ", SymbolName);
foreach (var lt in Symbol.DynamicLeverage) {
    var lots = Symbol.VolumeInUnitsToQuantity(lt.Volume);
    if (lt != Symbol.DynamicLeverage.Last()) {
        Print("{0:#,0}通貨({1:#,0}Lots)までは最大レバレッジ{2}倍", lt.Volume, lots, lt.Leverage);
    } else {
        Print("{0:#,0}通貨({1:#,0}Lots)以上は最大レバレッジ{2}倍?", lt.Volume, lots, lt.Leverage);

    }
}

実行してみると最大レバレッジが表示されます。

 

 

Symbolインターフェース

通貨ペアの基本情報に加え、BidやAskなどリアルタイムの情報を参照するためのインターフェースです。

public interface Symbol : SymbolInfo

SymbolInfoから継承されており、リアルタイムの情報を参照するためのメンバが追加されています。

 

プロパティ
(double) Ask

Ask値 (買う場合の価格) を取得します。

(double) Bid

Bid値 (売る場合の価格) を取得します。

(double) Spread

スプレッド (AskとBidの差) を取得します。Pipsじゃなく純粋な価格差です。

(double) UnrealizedGrossProfit

保有中ポジションの総利益を取得します。

(double) UnrealizedNetProfit

保有中ポジションのスワップ、手数料を加味した総利益を取得します。

 

SymbolInfoのプロパティ

Name、Digits、PipSize、PipValue、VolumeInUnitsMax、VolumeInUnitsMinなど。上記参照。

 

メソッド
SymbolInfoのメソッド

NormalizeVolumeInUnits、QuantityToVolumeInUnits、VolumeInUnitsToQuantity。

 

サンプルコード

Pips関連の計算にSymbol.PipSizeはとにかくよく使います。利益額や損失額の計算となるとSymbol.PipValueも結構使います。

// 1本前のローソク足の高値をストップロスに指定して売り発注
// 最大損失が10,000円以内におさまるようエントリーボリュームを調整する

// 最大損失とストップロスPipsを設定
double maxLoss = 10000;
var stopLossPips = Math.Round((Bars.Last(1).High - Bid)/Symbol.PipSize, 1);
var spreadPips = Symbol.Spread / Symbol.PipSize;

// stopLossPipsがスプレッド以下だったらなにもせず止める
if (stopLossPips < spreadPips) Stop();

// volumeを計算する
var volume = maxLoss / (Symbol.PipValue * (stopLossPips + spreadPips));
Print("maxLoss={0}, pipvalue={1}, losspips={2}", maxLoss, Symbol.PipValue, stopLossPips);
Print(volume);
volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);

//発注
ExecuteMarketOrder(TradeType.Sell, SymbolName, volume, "SymbolSampleCode", stopLossPips, null);

デモ口座で試してみてください。手数料分はずれますが、ストップロス位置で最大損失くらいになるようエントリーされるのが確認できると思います。

 

 

RoundingMode列挙型

Symbol.NormalizeVolumeInUnitsでの計算方式を表す列挙型です。

 

ToNearest 近い値。奇数丸めっぽいです。2500も3500も3000になります。
Down 切り捨て。NormalizeVolumeInUnits(volume, RoundingMode.Down) の結果は指定したvolumeよりも小さい数値になります。
Up 切り上げ。NormalizeVolumeInUnits(volume, RoundingMode.Up) の結果はvolumeよりも大きい数値になります。

 

 

SymbolCommissionType列挙型

手数料の計算方式を表す列挙型です。

UsdPerMillionVolume 100万通貨(USD)あたりで計算され、単位はUSDです。
UsdPerOneLot 1ロットあたり計算され単位はUSDです。
PercentageOfTradingVolume トレード総量の比率(%)で計算されます。
QuoteCurrencyPerOneLot 1ロットあたりで計算され、単位は決済通貨です。

たとえばUSDCADでCommisionが10、CommisionTypeが”UsdPerMillionVolume”の場合、100万ドルの取引あたり10ドルの手数料ということなので、1lot(10万通貨)トレードしたときの手数料は片道1ドルということになります。

少しわかりにくいですが、GBPUSDで同じ値だった場合は手数料は1lot片道1ポンドになります。(10万通貨=10万ポンド=約12万ドル=手数料は(100万ドルあたり10ドルなので)約1.2ドル=手数料は1ポンド)


まだコメントはありません

新しいコメント

コメントは承認後に公開されます。承認まで次のコメントは投稿できません。

cTrader's Life

© 2026 ajinori